将C++连接到 ActiveMQ 代理
Connect C++ to ActiveMQ broker
我正在尝试在C++和Java之间开发带有JMS通信的应用程序。
我有一个带有 Java 代理的"服务器",我想连接一个 c++ 发布者/列表者
我该怎么做?
我的 Java 类是:
"服务器":
public class Queue {
private static ActiveMQConnectionFactory connectionFactory;
private static Destination destination;
private static boolean transacted = false;
private static Session session;
private static Connection connection;
public static void main(String[] args) throws Exception {
BrokerService broker = new BrokerService();
broker.setUseJmx(true);
broker.addConnector("tcp://localhost:61616");
broker.start();
Producer p=new Producer();
Consumer c= new Consumer();
connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD,
ActiveMQConnection.DEFAULT_BROKER_URL);
connection = connectionFactory.createConnection();
connection.start();
session = connection
.createSession(transacted, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("queue");
c.createConsumerAndReceiveAMessage(connection, connectionFactory,session,destination );
p.createProducerAndSendAMessage(destination,session);
broker.stop();
}
制作人
public class Producer {
void createProducerAndSendAMessage(Destination destination,
Session session) throws JMSException {
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
Scanner sc=new Scanner(System.in);
String msg;
while(!(msg=sc.nextLine()).equals("exit") ){
TextMessage message = session.createTextMessage(msg);
System.out.println("Sending message " + message.getText());
producer.send(message);
}
}
消费者:
public class Consumer {
public void createConsumerAndReceiveAMessage(Connection connection,
ActiveMQConnectionFactory connectionFactory, Session session,
Destination destination) throws JMSException, InterruptedException {
connection = connectionFactory.createConnection();
connection.start();
MessageConsumer consumer = session.createConsumer(destination);
MyConsumer myConsumer = new MyConsumer();
connection.setExceptionListener(myConsumer);
consumer.setMessageListener(myConsumer);
}
private static class MyConsumer implements MessageListener,
ExceptionListener {
synchronized public void onException(JMSException ex) {
System.out.println("JMS Exception occured. Shutting down client.");
System.exit(1);
}
public void onMessage(Message message) {
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
try {
System.out.println("Received message "
+ textMessage.getText());
} catch (JMSException ex) {
System.out.println("Error reading message " + ex);
}
} else {
System.out.println("Received " + message);
}
}
}
问候
你看过ActiveMQ-CPP吗?这是ActiveMQ C++客户端,在项目的主页上有文档,示例和教程。
相关文章:
- 代理对象的常量正确性
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 当我在其中一个线程执行中(在activemq-cpp中)捕获到特定值时,我如何终止/停止所有其他线程
- 具有所表示类的相同构造函数签名的代理类模板
- 类型为 'std::map< char,int > 的 <Swig 对象的代理
- 我如何知道QNetWorkReped来自哪个代理?
- C++向量初始化遗传算法的代理向量
- 类(可能是代理)的命名,允许在不修改基础容器的情况下对项目进行排序和删除
- 如何将HTTPS流量重定向到本地主机:443上的代理?
- 适用于 Linux 的 c++ 上的代理脚本
- SNMP 代理在单元测试期间断开连接
- 模板代理方法无法编译
- 对于代理容器上的迭代器来说,"least bad implementation"可能是什么?
- 如何在ZMQ代理中记录接收消息?
- C++ boost::asio https 通过代理
- 使用函数指针作为成员函数的代理
- 摆脱 TCP 代理中的提升依赖关系. boost::system::error_code等效
- 如何使用Qt在D-Bus上创建/实例化配对代理
- WinHTTP 自动代理不起作用
- 将C++连接到 ActiveMQ 代理