发送即时JMS消息,表示处理进度

时间:2015-04-10 11:19:32

标签: java java-ee jms wildfly-8

我正在使用JMS 主题(使用非持久订阅者)向客户端报告服务器端处理的进度。应用程序服务器本身是WildFly 8.2,客户端是JavaFX应用程序。

在服务器端处理的每个特定里程碑(假设:完成工作的每十分之一)中,JMS消息被发送到客户订阅的主题。这个想法是,当收到JMS消息时,它可以用来向前推进“进度条”。

我的问题是,某种缓冲(?)发生在系统的某个地方,大概是在服务器端。处理本身是一个较长的10到30秒,并且消息被发送到队列 - 根据日志 - 大致均匀,一个在1-3秒。

然而,在客户端,整个消息都是在非常短的时间内收到的,通常在0.5秒内,通常在整个处理结束时。

我如何使用JMS消息来表示实时进度?

1 个答案:

答案 0 :(得分:0)

正如我在评论中写的那样,尼古拉斯是对的。 必须将transaction属性设置为TransactionAttributeType.REQUIRES_NEW。通过这种方式,消息传递bean可以立即发送JMS消息,而无需等待处理bean。