发送即时 JMS 消息,表示处理进度
Sending instantaneous JMS messages, representing progress of processing
我正在使用 JMS topic(具有非持久订阅者)向 progress 报告服务器端处理客户。应用服务器本身是 WildFly 8.2,客户端是 JavaFX 应用程序。
在服务器端处理的每个特定里程碑(比方说:完成工作的十分之一),一条 JMS 消息被发送到客户端订阅的主题。这个想法是,当收到 JMS 消息时,它可以用来驱动 "progress bar" 前进。
我的问题是,某种缓冲 (?) 发生在系统的某处,大概是在服务器端。处理本身较长,10 到 30 秒,消息被发送到队列 - 根据日志 - 大致均匀,每 1-3 秒一个。
但是,在客户端,整串消息是在很短的时间内收到的,通常不到 0.5 秒,通常是在整个处理结束时。
如何使用 JMS 消息传递来表示实时进度?
正如我在评论中所写,Nicholas 是对的。
事务属性必须设置为 TransactionAttributeType.REQUIRES_NEW
。这样消息传递 bean 可以立即发送 JMS 消息,而无需等待处理 bean。
我正在使用 JMS topic(具有非持久订阅者)向 progress 报告服务器端处理客户。应用服务器本身是 WildFly 8.2,客户端是 JavaFX 应用程序。
在服务器端处理的每个特定里程碑(比方说:完成工作的十分之一),一条 JMS 消息被发送到客户端订阅的主题。这个想法是,当收到 JMS 消息时,它可以用来驱动 "progress bar" 前进。
我的问题是,某种缓冲 (?) 发生在系统的某处,大概是在服务器端。处理本身较长,10 到 30 秒,消息被发送到队列 - 根据日志 - 大致均匀,每 1-3 秒一个。
但是,在客户端,整串消息是在很短的时间内收到的,通常不到 0.5 秒,通常是在整个处理结束时。
如何使用 JMS 消息传递来表示实时进度?
正如我在评论中所写,Nicholas 是对的。
事务属性必须设置为 TransactionAttributeType.REQUIRES_NEW
。这样消息传递 bean 可以立即发送 JMS 消息,而无需等待处理 bean。