Ballerina JMS 连接池?
Ballerina JMS connection pooling?
我有一个小的 Ballerina 程序,我从一个 JMS 队列接收消息,通过 JDBC 调用存储过程并向另一个 JMS 队列发送回复。
DB可以并行处理多个请求,所以我为它设置了一个JDBC连接池。如何设置类似JMS的连接池?
或者我应该只使用 Ballerina 服务池吗?
我不太熟悉 Ballerina,但通读了 Ballerina JMS tutorial it appears Ballerina can use Java libraries. If that is the case, then you should check out https://github.com/messaginghub/pooled-jms. It was forked from the mature ActiveMQ JMS Pool and enhanced to provide JMS 2.0 functionality. It is built on top of Apache Commons Pool,它是通用的(即与 ActiveMQ 无关),因此它适用于您选择的任何 JMS 实现。
Here's a simple example 如何使用它。您只需要实例化一个 JmsPoolConnectionFactory
,然后使用通常从 JNDI 获得的连接工厂调用 setConnectionFactory
。之后,您只需像使用任何普通 JMS 连接工厂一样使用它。
当前的 ballerina 实现不支持任何 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
我有一个小的 Ballerina 程序,我从一个 JMS 队列接收消息,通过 JDBC 调用存储过程并向另一个 JMS 队列发送回复。
DB可以并行处理多个请求,所以我为它设置了一个JDBC连接池。如何设置类似JMS的连接池?
或者我应该只使用 Ballerina 服务池吗?
我不太熟悉 Ballerina,但通读了 Ballerina JMS tutorial it appears Ballerina can use Java libraries. If that is the case, then you should check out https://github.com/messaginghub/pooled-jms. It was forked from the mature ActiveMQ JMS Pool and enhanced to provide JMS 2.0 functionality. It is built on top of Apache Commons Pool,它是通用的(即与 ActiveMQ 无关),因此它适用于您选择的任何 JMS 实现。
Here's a simple example 如何使用它。您只需要实例化一个 JmsPoolConnectionFactory
,然后使用通常从 JNDI 获得的连接工厂调用 setConnectionFactory
。之后,您只需像使用任何普通 JMS 连接工厂一样使用它。
当前的 ballerina 实现不支持任何 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