gpt4 book ai didi

java - 如何发布到在另一个进程中创建的安慰临时队列

转载 作者:行者123 更新时间:2023-12-02 12:47:17 26 4
gpt4 key购买 nike

我有一个 Java 应用程序,它使用队列中的消息。我还有一个测试客户端,它作为单独的 Java 应用程序运行并将消息发布到该队列。

为了在本地测试监听器应用程序,我让它创建一个临时队列并监听该队列。以下是我用于 Tibco 的监听器代码:

session = connection.createQueueSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);

Queue queue;
if (useTemporaryRequestQueue) {
queue = session.createTemporaryQueue();
requestQueueName = queue.getQueueName(); // $TMP$.server.UID
} else {
queue = session.createQueue(requestQueueName);
}

receiver = session.createReceiver(queue);
receiver.setMessageListener(this);

在我的测试客户端中,我可以使用以下代码连接到 Tibco 请求队列:

session = connection.createQueueSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
requestQueue = session.createQueue(requestQueueName); // $TMP$.server.UID
responseQueue = session.createTemporaryQueue();

当我尝试使用 Solace 临时队列名称进行 createQueue 调用时,它失败了:

java.lang.IllegalArgumentException: Non-durable endpoints are not allowed as an argument to provision
at com.solacesystems.jcsmp.impl.JCSMPBasicSession.provision(JCSMPBasicSession.java:1183)
at com.solacesystems.jms.SolSession.createQueue(SolSession.java:492)

还有其他方法可以从我的测试客户端连接到临时队列吗?

最佳答案

您不应在发布商中创建队列。

查看 API 示例中的 RRGuaranteedRequester.javaRRGuaranteedReplier.java,其中请求者创建一个临时队列作为 ReplyTo 目标,并且回复者通过将有保证的消息发布到该临时队列来进行回复。

在 RRGuaranteedReplier.java 中:

private void sendReply(XMLMessage request, XMLMessage reply) throws Exception {
Destination replyDestination = null;
replyDestination = request.getReplyTo();
...
producer.send(reply, replyDestination);
}

在 RRGuaranteedRequester.java 中:

void doRequest(Destination requestDestination, Operation operation, int leftHandOperand, int rightHandOperand) throws Exception {
Queue replyQueue = session.createTemporaryQueue();
...
request.setDeliveryMode(DeliveryMode.PERSISTENT);
request.setReplyTo(replyQueue);
...
}

您可以从 http://dev.solace.com/downloads/ 下载 API 中包含的全套示例。 .

关于java - 如何发布到在另一个进程中创建的安慰临时队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44724670/

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