java – JMS和Spring批处理

栏目: Java · 发布时间: 5年前

内容简介:翻译自:https://stackoverflow.com/questions/32992665/jms-and-spring-batch
我们的项目是使用每个的rest api集成两个应用程序,使用JMS(提供异步性质)和 spring

批处理从JMS队列读取批量数据并处理它,然后将其发布到接收应用程序.

我是JMS和春季批次的新手.我有几个基本问​​题要问:

>未来的哪个JMS模型 – (PTP或Pub / Sub)

>可以从JMS队列批量读取消息(使用JMSItemReader).如果是的话,任何人都可以提供代码.

>我们希望在将消息成功发布(即读取 – 处理 – 写入)到接收应用程序之后将消息确认为“已读”,而不是在JMSItemReader读取消息时.我们怎样才能做到这一点?

高级设计图如下

java – JMS和Spring批处理

PTP vs Pub / sub

使用消息队列的点对点方法是最标准的方法.特别是在批处理应用程序中,我看不到使用Publish订阅的直接原因,假设您有多个相同消息的使用者.

理论上如果需要在相同的数据块上执行多个功能,您可以将不同的处理器组织为订户,这样就可以扩展应用程序,但这是非常先进的使用场景.

可以从JMS队列批量读取消息:

这里的JMS规范只讨论(模糊地可能误读它)关于消息的批量确认,但它没有对消息的批量传递设置要求.

CLIENT_ACKNOWLEDGE – With this option, a client acknowledges a message  by calling the message’s acknowledge method. Acknowledging a consumed  message automatically acknowledges the receipt of all messages that  have been delivered by its session. 

简单地说,关于批量交付的答案是“如果JMS提供商支持它,那么是,否则没有”

大多数提供商允许批量确认消息

这是Oracles的界面:

public interface com.sun.messaging.jms.Message {
          void acknowledgeThisMessage() throws JMSException;
          void acknowledgeUpThroughThisMessage() throws JMSException;
}

CLIENT_ACKNOWLEDGE的组合.在a上调用方法acknowledgeUpThroughThisMessage.消息将确认到那时为止收到的所有消息.

手动确认消息:

这可以通过CLIENT_ACKNOWLEDGE和Message上的确认方法来实现.在这里,我将再次引用您的确认方法的javadoc,它还引用了您的第二个问题,并且它讨论了直到某一点的所有消息的批量确认.

void acknowledge()  throws JMSException Acknowledges all consumed messages of the session of this consumed message. All consumed JMS messages  support the acknowledge method for use when a client has specified  that its JMS session’s consumed messages are to be explicitly  acknowledged. By invoking acknowledge on a consumed message, a client  acknowledges all messages consumed by the session that the message was  delivered to.
Calls to acknowledge are ignored for both transacted sessions and  sessions specified to use implicit acknowledgement modes.
A client may individually acknowledge each message as it is consumed,  or it may choose to acknowledge messages as an application-defined  group (which is done by calling acknowledge on the last received  message of the group, thereby acknowledging all messages consumed by  the session.)
Messages that have been received but not acknowledged may be  redelivered.

翻译自:https://stackoverflow.com/questions/32992665/jms-and-spring-batch


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

无线:网络文化中激进的经验主义

无线:网络文化中激进的经验主义

[英] 阿德里安·麦肯齐 / 张帆 / 上海译文出版社 / 2018-9

本书研究了无线是如何成为当代人类经验的主角的。从路由器、智能电话、电子书、城市到在线工作、服务协议、玩具以及国家等各个方面,人们已经感觉到了无线技术所引发的变革。本书作者援引一个世纪之前的哲学技术来分析当代最前沿的后网络时代的人类状况。基于威廉•詹姆斯的实用主义哲学相关的彻底经验主义,作者提出了把失序的无线网络世界与人们的感知匹配起来的新方式。一起来看看 《无线:网络文化中激进的经验主义》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具