使用CMS的ActiveMQ多主题
我试图通过为每个主题创建单独的会话,在同一个连接中创建多个主题。主题和第一个持久消费者都已成功创建,但我在创建第二个消费者时出错。代码可以完美地处理单个主题,但我需要在运行时在同一个连接中创建多个主题 下面是代码使用CMS的ActiveMQ多主题,activemq,activemq-cpp,Activemq,Activemq Cpp,我试图通过为每个主题创建单独的会话,在同一个连接中创建多个主题。主题和第一个持久消费者都已成功创建,但我在创建第二个消费者时出错。代码可以完美地处理单个主题,但我需要在运行时在同一个连接中创建多个主题 下面是代码 activemq::library::ActiveMQCPP::initializeLibrary(); // create connection factory auto_ptr<ConnectionFactory> connection
activemq::library::ActiveMQCPP::initializeLibrary();
// create connection factory
auto_ptr<ConnectionFactory> connectionFactory(ConnectionFactory::createCMSConnectionFactory(brokerURI));
// create a connection
connection = connectionFactory->createConnection(uname,pwd,applicationId);
connection->setExceptionListener(this);
// adding transport listener
ActiveMQConnection* amqConnection = dynamic_cast<ActiveMQConnection*>( connection );
amqConnection->addTransportListener( this );
// create a session
session[0] = connection->createSession( Session::AUTO_ACKNOWLEDGE );
session[1] = connection->createSession( Session::AUTO_ACKNOWLEDGE );
destination[0] = session[0]->createTopic(serviceTopic);
topic[0] = session[0]->createTopic(serviceTopic);
destination[1] = session[1]->createTopic(serviceTopic2);
topic[1] = session[1]->createTopic(serviceTopic2);
producer[0] = session[0]->createProducer(destination[0]);
producer[1] = session[1]->createProducer(destination[1]);
consumerDurable[1] = session[1]->createDurableConsumer(topic[1], applicationId, getSelector(0), false);
consumerDurable[1]->setMessageListener(this);
consumerDurable[0] = session[0]->createDurableConsumer(topic[0], applicationId, getSelector(1), false);
consumerDurable[0]->setMessageListener(this);
activemq::library::ActiveMQCPP::initializeLibrary();
//创建连接工厂
自动ptr连接工厂(connectionFactory::createCMSConnectionFactory(brokerURI));
//创建连接
连接=连接工厂->创建连接(uname、pwd、applicationId);
connection->setExceptionListener(此);
//添加传输侦听器
ActiveMQConnection*amqConnection=dynamic_cast(连接);
amqConnection->addTransportListener(此);
//创建会话
会话[0]=连接->创建会话(会话::自动确认);
会话[1]=连接->创建会话(会话::自动确认);
目的地[0]=会话[0]->createTopic(serviceTopic);
主题[0]=会话[0]->createTopic(serviceTopic);
目的地[1]=会话[1]->createTopic(serviceTopic2);
主题[1]=会话[1]->createTopic(serviceTopic2);
生产者[0]=会话[0]->createProducer(目标[0]);
生产者[1]=会话[1]->createProducer(目标[1]);
consumerDurable[1]=会话[1]->createDurableConsumer(主题[1],应用程序ID,getSelector(0),false);
consumerDurable[1]->setMessageListener(此);
consumerDurable[0]=会话[0]->createDurableConsumer(主题[0],应用程序ID,getSelector(1),false);
consumerDurable[0]->setMessageListener(此);
------------可变值--------------
applicationId=“Test123”
getSelector(0)=“CID与'Test123'不同,耐久性与'0'相似”请查看ActiveMQ上的帮助页面。它解释了持久订阅如何针对主题工作。特别是:
JMS规范规定,S的标识由
clientID和持久订户名称的组合。这是
因此,JMS连接的使用可以有许多不同的持久性
对不同主题的订阅或对同一主题使用不同的
选择器—但是JMS提供程序可以知道哪个消息对应哪个消息
订阅以保留它
您需要为不同的使用者使用不同的ID。查看ActiveMQ上的帮助页面。它解释了持久订阅如何针对主题工作。特别是:
JMS规范规定,S的标识由
clientID和持久订户名称的组合。这是
因此,JMS连接的使用可以有许多不同的持久性
对不同主题的订阅或对同一主题使用不同的
选择器—但是JMS提供程序可以知道哪个消息对应哪个消息
订阅以保留它
您需要为不同的使用者使用不同的ID