Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JMS中接收确认_Java_Jms_Publish Subscribe - Fatal编程技术网

Java 如何在JMS中接收确认

Java 如何在JMS中接收确认,java,jms,publish-subscribe,Java,Jms,Publish Subscribe,这是我的设想。该程序采用发布者/订阅者方法开发。在生产者和消费者部分有两个主题(主题1、主题2)。我需要在producer program中从消费者处获得接收到的topic1的确认,以便当确认状态为true时,producer program必须在topic2上发送消息 已经在谷歌上搜索了建议进行会话的链接。客户在消费者中确认。但我需要将确认状态返回给制片人,以便进一步处理 JMS规范没有为发布者定义任何API,让发布者知道消息是否被订阅者使用。发布者只是发布一条消息,而将该消息传递给订阅者的是

这是我的设想。该程序采用发布者/订阅者方法开发。在生产者和消费者部分有两个主题(主题1、主题2)。我需要在producer program中从消费者处获得接收到的topic1的确认,以便当确认状态为true时,producer program必须在topic2上发送消息


已经在谷歌上搜索了建议进行会话的链接。客户在消费者中确认。但我需要将确认状态返回给制片人,以便进一步处理

JMS规范没有为发布者定义任何API,让发布者知道消息是否被订阅者使用。发布者只是发布一条消息,而将该消息传递给订阅者的是消息传递提供者/代理。如果存在订阅,代理将传递消息,否则该消息将被丢弃

session.CLIENT\u ACKNOWLEDGE
选项是消费者告诉消息传递提供者(而非生产者)从其队列/内存中删除消息的方式之一。还有两个其他确认选项,但所有这些选项都用于通知消息传递提供商删除消息,而不是通知生产者

若制作者需要消费者的确认,则消费者必须发布另一主题的确认消息,制作者订阅该主题以接收这些确认。例如:

制作人在主题1上发布 制作人订阅
主题1/ACKS

消费者订阅
主题1

收到消息后
消费者将确认信息发布到
TOPIC1/ACKS

制作人将收到确认信息。
然后可以在TOPIC2上发布


您必须注意,TOPIC1上可能有多个订阅者,因此可能有多个确认消息

JMS规范没有为发布者定义任何API,让发布者知道消息是否被订阅者使用。发布者只是发布一条消息,而将该消息传递给订阅者的是消息传递提供者/代理。如果存在订阅,代理将传递消息,否则该消息将被丢弃

session.CLIENT\u ACKNOWLEDGE
选项是消费者告诉消息传递提供者(而非生产者)从其队列/内存中删除消息的方式之一。还有两个其他确认选项,但所有这些选项都用于通知消息传递提供商删除消息,而不是通知生产者

若制作者需要消费者的确认,则消费者必须发布另一主题的确认消息,制作者订阅该主题以接收这些确认。例如:

制作人在主题1上发布 制作人订阅
主题1/ACKS

消费者订阅
主题1

收到消息后
消费者将确认信息发布到
TOPIC1/ACKS

制作人将收到确认信息。
然后可以在TOPIC2上发布


您必须注意,TOPIC1上可能有多个订阅者,因此可能有多个确认消息

如果您的程序只包含一个消息生产者,您可以在消息消费者中创建一个队列,并让生产者订阅该队列。在队列模式中,它是点对点的。因此,信息将只从消费者传递给生产者


或者,您也可以使用方法指定消费者从生产者接收消息时希望其答复的队列。这样,您不需要在使用者中显式创建队列,但也可以在生产者中创建队列。但是您仍然需要让制作者侦听该队列以接收确认。

如果您的程序只包含一个消息制作者,您可以在消息使用者中创建一个队列,并让制作者订阅该队列。在队列模式中,它是点对点的。因此,信息将只从消费者传递给生产者


或者,您也可以使用方法指定消费者从生产者接收消息时希望其答复的队列。这样,您不需要在使用者中显式创建队列,但也可以在生产者中创建队列。但您仍然需要让制作人收听该队列才能收到确认。

您能告诉我一个例子吗?您能告诉我一个例子吗?