gpt4 book ai didi

java - 具有 2 个监听器的 JMS 队列

转载 作者:行者123 更新时间:2023-11-30 04:20:19 25 4
gpt4 key购买 nike

我有一个关于 JMS 队列的问题。

我已经使用共享队列实现了 jms 发送器/接收器,因为它是我可用的唯一队列,也是我唯一可以使用的队列。

我现在面临的问题是,由于先到先得,我无法保证我从生产者发送的消息将被我的消费者消耗,而不是其他共享此队列的消息,反之亦然。所以我正在消耗其他应用程序的消息,它们也正在消耗我的消息。

有没有一种方法可以让我只监听消息而不从队列中使用它们,或者这更像是一个主题实现?

或者也许我可以显式设置一个只有我的消费者才会选择的标识符。

我的主要代码:

public class AsyncReceiver implements MessageListener, ExceptionListener
{
public static void main(String[] args) throws Exception
{
//create queue factory
factory = new TibjmsQueueConnectionFactory(serverUrl);
//create queue connection
queueConn = factory.createQueueConnection(userName, password);
queueConn.setExceptionListener(this);
//create queue session
session = queueConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

//receive message by QueueReceiver
final Queue queue = session.createQueue(queueName);
final QueueReceiver queueReceiver = session.createReceiver(queue);
queueReceiver.setMessageListener(this);
queueConn.start ();
}

最佳答案

您应该使用 JMS 选择器。每条 JMS 消息都可以包含您在发送方启动的属性。

消息使用者可以注册到 JMS 目标(队列或主题),指定选择器 - 类似 SQL 的语句,解释它想要使用哪些消息。因此,您可以指定应用程序特定的属性,然后仅接收相关消息。

关于java - 具有 2 个监听器的 JMS 队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17195246/

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