我正在使用JMS 主题(使用非持久订阅者)向客户端报告服务器端处理的进度。应用程序服务器本身是WildFly 8.2,客户端是JavaFX应用程序。
在服务器端处理的每个特定里程碑(假设:完成工作的每十分之一)中,JMS消息被发送到客户订阅的主题。这个想法是,当收到JMS消息时,它可以用来向前推进“进度条”。
我的问题是,某种缓冲(?)发生在系统的某个地方,大概是在服务器端。处理本身是一个较长的10到30秒,并且消息被发送到队列 - 根据日志 - 大致均匀,一个在1-3秒。
然而,在客户端,整个消息都是在非常短的时间内收到的,通常在0.5秒内,通常在整个处理结束时。
我如何使用JMS消息来表示实时进度?
答案 0 :(得分:0)
正如我在评论中写的那样,尼古拉斯是对的。
必须将transaction属性设置为TransactionAttributeType.REQUIRES_NEW
。通过这种方式,消息传递bean可以立即发送JMS消息,而无需等待处理bean。