我有一个小的Ballerina程序,我从一个JMS队列接收消息,通过JDBC调用存储过程,然后将答复发送到另一个JMS队列。
DB可以并行处理多个请求,因此我为其设置了JDBC连接池。如何设置类似的JMS连接池?
或者我应该只拥有一组芭蕾舞女演员服务吗?
答案 0 :(得分:1)
当前的芭蕾舞演员实施不支持任何JMS资源池。
但是,芭蕾舞女演员的模型应该允许并行处理,而无需显式编码。
使用来自以下GIST jmsreceiver.bal的代码,该处理是并行完成的。
它产生了以下日志:
Initiating service(s) in 'receiver.bal'
2018-12-08 18:38:38,963 INFO [ballerina/jms] - Message receiver created for queue MyQueue
2018-12-08 18:38:57,445 INFO [] - rcv ID:EMS-SERVER.55865C0BF16270:1500
2018-12-08 18:38:58,461 INFO [] - snd ID:EMS-SERVER.55865C0BF16270:1500
2018-12-08 18:38:58,466 INFO [] - rcv ID:EMS-SERVER.55865C0BF16270:1501
2018-12-08 18:38:58,474 INFO [] - rcv ID:EMS-SERVER.55865C0BF16271:1502
2018-12-08 18:38:59,469 INFO [] - snd ID:EMS-SERVER.55865C0BF16270:1501
2018-12-08 18:38:59,472 INFO [] - rcv ID:EMS-SERVER.55865C0BF16270:1503
2018-12-08 18:38:59,478 INFO [] - snd ID:EMS-SERVER.55865C0BF16271:1502
答案 1 :(得分:0)
我对Ballerina并不是很熟悉,但是通读Ballerina JMS tutorial看来Ballerina可以使用Java库。如果是这种情况,那么您应该签出https://github.com/messaginghub/pooled-jms。它是从成熟的ActiveMQ JMS Pool中派生出来的,并经过增强以提供JMS 2.0功能。它建立在Apache Commons Pool之上,并且是通用的(即与ActiveMQ没有关系),因此可以与您选择的任何JMS实现一起使用。
Here's a simple example如何使用它。您只需要实例化一个JmsPoolConnectionFactory
,然后使用通常会从JNDI获得的连接工厂调用setConnectionFactory
。之后,您可以像使用任何普通的JMS连接工厂一样使用它。