use of org.apache.activemq.command.SessionId in project activemq-artemis by apache.
the class OpenWireConnection method addConsumer.
public void addConsumer(ConsumerInfo info) throws Exception {
// Todo: add a destination interceptors holder here (amq supports this)
SessionId sessionId = info.getConsumerId().getParentId();
ConnectionId connectionId = sessionId.getParentId();
ConnectionState cs = getState();
if (cs == null) {
throw new IllegalStateException("Cannot add a consumer to a connection that had not been registered: " + connectionId);
}
SessionState ss = cs.getSessionState(sessionId);
if (ss == null) {
throw new IllegalStateException(server + " Cannot add a consumer to a session that had not been registered: " + sessionId);
}
// Avoid replaying dup commands
if (!ss.getConsumerIds().contains(info.getConsumerId())) {
AMQSession amqSession = sessions.get(sessionId);
if (amqSession == null) {
throw new IllegalStateException("Session not exist! : " + sessionId);
}
List<AMQConsumer> consumersList = amqSession.createConsumer(info, new SlowConsumerDetection());
if (consumersList.size() == 0) {
return;
}
this.addConsumerBrokerExchange(info.getConsumerId(), amqSession, consumersList);
ss.addConsumer(info);
amqSession.start();
if (AdvisorySupport.isAdvisoryTopic(info.getDestination())) {
// advisory for temp destinations
if (AdvisorySupport.isTempDestinationAdvisoryTopic(info.getDestination())) {
// Replay the temporary destinations.
List<DestinationInfo> tmpDests = this.protocolManager.getTemporaryDestinations();
for (DestinationInfo di : tmpDests) {
ActiveMQTopic topic = AdvisorySupport.getDestinationAdvisoryTopic(di.getDestination());
String originalConnectionId = di.getConnectionId().getValue();
protocolManager.fireAdvisory(context, topic, di, info.getConsumerId(), originalConnectionId);
}
}
}
}
}
use of org.apache.activemq.command.SessionId in project activemq-artemis by apache.
the class SessionIdTest method createObject.
@Override
public Object createObject() throws Exception {
SessionId info = new SessionId();
populateObject(info);
return info;
}
use of org.apache.activemq.command.SessionId in project activemq-artemis by apache.
the class SessionIdTest method populateObject.
@Override
protected void populateObject(Object object) throws Exception {
super.populateObject(object);
SessionId info = (SessionId) object;
info.setConnectionId("ConnectionId:1");
info.setValue(1);
}
use of org.apache.activemq.command.SessionId in project activemq-artemis by apache.
the class SessionIdTest method createObject.
@Override
public Object createObject() throws Exception {
SessionId info = new SessionId();
populateObject(info);
return info;
}
use of org.apache.activemq.command.SessionId in project activemq-artemis by apache.
the class SessionIdTest method populateObject.
@Override
protected void populateObject(Object object) throws Exception {
super.populateObject(object);
SessionId info = (SessionId) object;
info.setConnectionId("ConnectionId:1");
info.setValue(1);
}
Aggregations