【问题标题】:Going for multiple consumers - One or more queues?面向多个消费者 - 一个或多个队列?
【发布时间】:2015-09-03 22:20:16
【问题描述】:

我有一个为 1000 个客户端应用程序生成消息的应用程序。 每个客户端都会轮询这个 ActiveMQ 并查找他的消息。

  • 我应该为每个客户端实现一个队列吗?
  • 为所有客户端使用一个队列并使用 JMS 属性区分消息会更好吗?

带有 JMS 属性的示例代码

制作人:

Message message = context.createTextMessage(text);
message.setStringProperty("Client", client);
context.createProducer().send(queue, message);

消费者:

String messageSelector = "Client = '" + client + "'";
JMSConsumer receiver = context.createConsumer(queue, messageSelector);

“客户”将成为我唯一的客户标识符。例如:客户端 1;客户端 2; ... 或 GUID。

【问题讨论】:

    标签: java queue jms


    【解决方案1】:

    您希望每个客户端每秒有多少消息?接收消息的所有 1000 个客户端以及消息选择也会降低吞吐量。将客户端拆分到可管理数量的队列中是个好主意。

    【讨论】:

    • 我将有 1000 个客户端每秒轮询服务器。消息的数量非常少。每分钟 1 次或更慢。但是当有消息时,客户端必须在几秒钟内采取行动。
    • 好的。看看您是否可以使用消息侦听器而不是轮询队列。当符合选择条件的消息到达队列时,消息提供程序将调用消息侦听器。
    • messageListener 实现是否需要在我的服务器上建立 1000 个连接?这是一个好习惯吗?谢谢。
    • 由于您将运行 1000 个客户端应用程序实例,因此它们都需要与您的服务器建立连接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多