我们正在C#中使用Apache.NMS库。
是否可能有多个生产者线程使用同一连接发送消息?每次共享连接还是创建新连接更好?
我正在寻找灵感,但这似乎并没有得到很好的维护https://github.com/tabish121/NMS.Pooled
一般而言,连接被认为是共享的,因为它们被认为是相对“重”的对象。当然,可能有多个生产者线程,每个线程都使用相同的连接发送消息。您肯定不每次都想创建一个新的连接。
ActiveMQ NMS API是根据JMS API建模的,它非常清楚哪些对象是线程安全的,哪些不是线程安全的。简而言之,连接是线程安全的,而会话不是。因此,建议您在多个线程之间同时使用连接。也就是说,对于NMS,没有像JMS那样严格的规范或TCK,因此很难提供严格的保证。实际行为将取决于您使用的特定实现(例如AMQP,OpenWire,STOMP等)。