gpt4 book ai didi

java - 未使用 ActiveMQ VM Transport 接收来自生产者的消息

转载 作者:行者123 更新时间:2023-12-01 08:52:56 26 4
gpt4 key购买 nike

我现在正在安静地使用 activeMQ tcp//localhost URL,并且我没有遇到任何问题。目前,我正在尝试使用“vm//localhost”连接器,但我在接收来自生产者的消息时遇到问题。我使用的是 Spring Boot,生产者和消费者位于不同的 jar 中。我的消费者收到一条空消息。我错过了什么吗?下面是我的代码(取自 apache 网站)。提前致谢

生产者.jar

ActiveMQConnectionFactory connectionFactory = 
new ActiveMQConnectionFactory("vm://localhost");
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("TEST.FOO");
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

String text = "Hello world! From: " + Thread.currentThread().getName() + " : " + this.hashCode();
TextMessage message = session.createTextMessage(text);

System.out.println("Sent message: " + message.hashCode() + " : " + Thread.currentThread().getName());
producer.send(message);

session.close();
connection.close();

消费者.jar

ActiveMQConnectionFactory connectionFactory =
new ActiveMQConnectionFactory("vm://localhost");
Connection connection = connectionFactory.createConnection();
connection.start();

connection.setExceptionListener(this);

Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("TEST.FOO");

MessageConsumer consumer = session.createConsumer(destination);

// Wait for a message
Message message = consumer.receive(10000);

if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
String text = textMessage.getText();
System.out.println("Received 1: " + text);
} else {
System.out.println("Received 2: " + message);
}

consumer.close();
session.close();
connection.close();

最佳答案

我确信,vm 是 VM 内部的传输!并且无法在其外部访问,因此解决方案是 2 个客户端之一需要使用 vm 传输,另一个客户端需要使用 vm 传输在其中启动 tcp 和 ActiveMQ,或者将 2 个组件嵌入到同一 VM 中。

请参阅我对同一用例的另一个答案 How to send Jms message from one spring-boot application to another when both apps use embedded activemq

关于java - 未使用 ActiveMQ VM Transport 接收来自生产者的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42268329/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com