use of com.microsoft.azure.servicebus.amqp.ReceiveLinkHandler in project azure-service-bus-java by Azure.
the class RequestResponseLink method createInternalLinks.
private void createInternalLinks() {
Map<Symbol, Object> commonLinkProperties = new HashMap<>();
// ServiceBus expects timeout to be of type unsignedint
commonLinkProperties.put(ClientConstants.LINK_TIMEOUT_PROPERTY, UnsignedInteger.valueOf(Util.adjustServerTimeout(this.underlyingFactory.getOperationTimeout()).toMillis()));
// Create send link
final Connection connection = this.underlyingFactory.getConnection();
Session session = connection.session();
session.setOutgoingWindow(Integer.MAX_VALUE);
session.open();
BaseHandler.setHandler(session, new SessionHandler(this.linkPath));
String sendLinkNamePrefix = "RequestResponseLink-Sender".concat(TrackingUtil.TRACKING_ID_TOKEN_SEPARATOR).concat(StringUtil.getShortRandomString());
String sendLinkName = !StringUtil.isNullOrEmpty(connection.getRemoteContainer()) ? sendLinkNamePrefix.concat(TrackingUtil.TRACKING_ID_TOKEN_SEPARATOR).concat(connection.getRemoteContainer()) : sendLinkNamePrefix;
Sender sender = session.sender(sendLinkName);
Target sednerTarget = new Target();
sednerTarget.setAddress(this.linkPath);
sender.setTarget(sednerTarget);
Source senderSource = new Source();
senderSource.setAddress(this.replyTo);
sender.setSource(senderSource);
sender.setSenderSettleMode(SenderSettleMode.SETTLED);
sender.setProperties(commonLinkProperties);
SendLinkHandler sendLinkHandler = new SendLinkHandler(this.amqpSender);
BaseHandler.setHandler(sender, sendLinkHandler);
this.amqpSender.setSendLink(sender);
TRACE_LOGGER.debug("RequestReponseLink - opening send link to {}", this.linkPath);
sender.open();
// Create receive link
session = connection.session();
session.setOutgoingWindow(Integer.MAX_VALUE);
session.open();
BaseHandler.setHandler(session, new SessionHandler(this.linkPath));
String receiveLinkNamePrefix = "RequestResponseLink-Receiver".concat(TrackingUtil.TRACKING_ID_TOKEN_SEPARATOR).concat(StringUtil.getShortRandomString());
String receiveLinkName = !StringUtil.isNullOrEmpty(connection.getRemoteContainer()) ? receiveLinkNamePrefix.concat(TrackingUtil.TRACKING_ID_TOKEN_SEPARATOR).concat(connection.getRemoteContainer()) : receiveLinkNamePrefix;
Receiver receiver = session.receiver(receiveLinkName);
Source receiverSource = new Source();
receiverSource.setAddress(this.linkPath);
receiver.setSource(receiverSource);
Target receiverTarget = new Target();
receiverTarget.setAddress(this.replyTo);
receiver.setTarget(receiverTarget);
// Set settle modes
receiver.setSenderSettleMode(SenderSettleMode.SETTLED);
receiver.setReceiverSettleMode(ReceiverSettleMode.FIRST);
receiver.setProperties(commonLinkProperties);
final ReceiveLinkHandler receiveLinkHandler = new ReceiveLinkHandler(this.amqpReceiver);
BaseHandler.setHandler(receiver, receiveLinkHandler);
this.amqpReceiver.setReceiveLink(receiver);
TRACE_LOGGER.debug("RequestReponseLink - opening receive link to {}", this.linkPath);
receiver.open();
}
use of com.microsoft.azure.servicebus.amqp.ReceiveLinkHandler in project azure-service-bus-java by Azure.
the class CoreMessageReceiver method createReceiveLink.
private void createReceiveLink() {
TRACE_LOGGER.info("Creating receive link to '{}'", this.receivePath);
Connection connection = this.underlyingFactory.getConnection();
final Session session = connection.session();
session.setIncomingCapacity(Integer.MAX_VALUE);
session.open();
BaseHandler.setHandler(session, new SessionHandler(this.receivePath));
final String receiveLinkNamePrefix = StringUtil.getShortRandomString();
final String receiveLinkName = !StringUtil.isNullOrEmpty(connection.getRemoteContainer()) ? receiveLinkNamePrefix.concat(TrackingUtil.TRACKING_ID_TOKEN_SEPARATOR).concat(connection.getRemoteContainer()) : receiveLinkNamePrefix;
final Receiver receiver = session.receiver(receiveLinkName);
Source source = new Source();
source.setAddress(receivePath);
Map<Symbol, Object> linkProperties = new HashMap<>();
// ServiceBus expects timeout to be of type unsignedint
linkProperties.put(ClientConstants.LINK_TIMEOUT_PROPERTY, UnsignedInteger.valueOf(Util.adjustServerTimeout(this.underlyingFactory.getOperationTimeout()).toMillis()));
if (this.isSessionReceiver) {
HashMap filterMap = new HashMap();
filterMap.put(ClientConstants.SESSION_FILTER, this.sessionId);
source.setFilter(filterMap);
linkProperties.put(ClientConstants.LINK_PEEKMODE_PROPERTY, this.isBrowsableSession);
}
receiver.setSource(source);
receiver.setTarget(new Target());
// Set settle modes
TRACE_LOGGER.debug("Receive link settle mode '{}'", this.settleModePair);
receiver.setSenderSettleMode(this.settleModePair.getSenderSettleMode());
receiver.setReceiverSettleMode(this.settleModePair.getReceiverSettleMode());
receiver.setProperties(linkProperties);
final ReceiveLinkHandler handler = new ReceiveLinkHandler(this);
BaseHandler.setHandler(receiver, handler);
receiver.open();
this.receiveLink = receiver;
}
Aggregations