Java JMS消息生产者和消费者事务管理

Java JMS消息生产者和消费者事务管理,java,transactions,jms,messaging,producer-consumer,Java,Transactions,Jms,Messaging,Producer Consumer,我正在尝试为我当前的项目实现JMS 我已经将消息生产者和消息消费者创建为两个独立的应用程序,并希望将生产和消费作为两个独立的进程(客户端)。但我的要求是在生产者和消费者之间进行交易管理。比如说,若制作者发送了一批100条消息,若其中任何一条消息传递失败,那个么整个100条消息都应该失败 我想我可以做到这一点,因为我发送的每批消息都在单独的会话中,因此我可以提交或回滚会话。但我的使用者是异步的,在单个会话上运行 如何在消费者中实现交易管理?我希望,如果来自该批处理的任何单个消息处理(消耗)失败,消

我正在尝试为我当前的项目实现JMS

我已经将消息生产者和消息消费者创建为两个独立的应用程序,并希望将生产和消费作为两个独立的进程(客户端)。但我的要求是在生产者和消费者之间进行交易管理。比如说,若制作者发送了一批100条消息,若其中任何一条消息传递失败,那个么整个100条消息都应该失败

我想我可以做到这一点,因为我发送的每批消息都在单独的会话中,因此我可以提交或回滚会话。但我的使用者是异步的,在单个会话上运行


如何在消费者中实现交易管理?我希望,如果来自该批处理的任何单个消息处理(消耗)失败,消费者也应该回滚上面提到的100个消息批处理。

您希望实现类似端到端确认的功能,但这与消息队列这一本质上是异步的概念存在冲突。如果您的消费者很忙,交易可能会持续更长的时间

为了简化它,我不会发送100条消息,而是只发送一条消息,因为实际上您只有一条逻辑消息

为了实现确认/重试,消费者可以在不同的队列上发回另一条消息。制作者可以重试,接收者必须丢弃重复品等


我宁愿分担责任:制作人的责任是将消息传递到您的消息服务器。数据中心有责任检查队列是否已满。客户端的责任是,只从队列中删除已完全处理的消息(查找JMS会话客户端确认)。

您希望实现类似端到端确认的功能,但这与消息队列本质上是异步的想法存在冲突。如果您的消费者很忙,交易可能会持续更长的时间

为了简化它,我不会发送100条消息,而是只发送一条消息,因为实际上您只有一条逻辑消息

为了实现确认/重试,消费者可以在不同的队列上发回另一条消息。制作者可以重试,接收者必须丢弃重复品等


我宁愿分担责任:制作人的责任是将消息传递到您的消息服务器。数据中心有责任检查队列是否已满。客户端的责任是,只从队列中删除已完全处理的消息(查找JMS会话客户端确认)。

我不想实现端到端事务管理,而是想实现两阶段事务。这意味着,如果生产者方面出现问题,只有消息发送应该回滚,如果消费者方面出现问题,只有消费应该回滚,但我想在批处理原子级别上实现这一点,可能还有其他解决方案,但我只会使用一个批处理消息。它们包含什么?它们的大小是多少?我不想实现端到端事务管理,而是想实现两阶段事务。这意味着,如果生产者方面出现问题,只有消息发送应该回滚,如果消费者方面出现问题,只有消费应该回滚,但我想在批处理原子级别上实现这一点,可能还有其他解决方案,但我只会使用一个批处理消息。它们包含什么?它们的大小是多少?