如何使用 qpid-jms-client 创建 RabbitMQ 持久队列?
Posted
技术标签:
【中文标题】如何使用 qpid-jms-client 创建 RabbitMQ 持久队列?【英文标题】:How to create RabbitMQ durable Queue by using qpid-jms-client? 【发布时间】:2022-01-20 01:37:27 【问题描述】:我正在尝试使用 Qpid Java 客户端(org.apache.qpid:qpid-jms-client:0.59.0) 连接到 RabbitMQ(v3.8.2)。我在 RabbitMQ 上启用了 rabbitmq_amqp1_0 插件。
他们似乎工作正常,但除了一件事。如何使用 Qpid JMS 创建 durable 队列?我想在消费消息之前创建一个 RabbitMQ durable 队列。
如下图,我只能创建tranmsg-uplink-t5队列,不是durable:
我希望自动生成的 tranmsg-uplink-t5 队列像 tranmsg-downlink-queue 队列一样durable(它具有D 特征)。
这是我的代码:
import javax.jms.BytesMessage;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.qpid.jms.JmsConnectionFactory;
import org.apache.qpid.jms.JmsQueue;
public class ReceiverClient
public static void main(String[] args)
try
ConnectionFactory factory = new JmsConnectionFactory(
"guest",
"guest",
"amqp://127.0.0.1:5672?jms.requestTimeout=2000&jms.sendTimeout=1000");
Queue queue = new JmsQueue("tranmsg-uplink-t5");
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageConsumer consumer = session.createConsumer(queue);
Message message = consumer.receive(20000);
if (message != null)
System.out.print(
"receive a message: ");
if (message instanceof BytesMessage)
BytesMessage bytesMessage = (BytesMessage) message;
byte[] b = new byte[(int) bytesMessage.getBodyLength()];
bytesMessage.readBytes(b);
System.out.println(new String(b));
else
TextMessage textMessage = (TextMessage) message;
System.out.println(textMessage.getText());
connection.close();
catch (Exception ex)
System.out.println("[CLIENT] Caught exception, exiting");
ex.printStackTrace(System.out);
System.exit(-1);
你能告诉我怎么做吗?感谢您的所有帮助!
【问题讨论】:
【参考方案1】:看来我自己找到了答案。
使用这个方法:javax.jms.Session.createDurableConsumer(Topic, String)
。
【讨论】:
以上是关于如何使用 qpid-jms-client 创建 RabbitMQ 持久队列?的主要内容,如果未能解决你的问题,请参考以下文章
如何绘制从使用 R 中的“caret”包创建的随机森林中选择的树
数据仓库 - 如何使用 R 和/或 SQL 创建一个与所有维度相交的事实表