我正在为我团队的一个应用研究排队解决方案。理想情况下,我们希望既可以配置为轻量级的进程内代理(用于线程之间的低吞吐量消息传递)也可以配置为外部代理。有没有可以做到这一点的MQ服务器?大多数似乎需要设置为外部实体。ZeroMQ似乎最接近进程内解决方案,但它似乎更像是“类固醇上的UDP套接字”,我们需要可靠的交付。 最佳答案 就像我们说的,ActiveMQ比ZeroMQ重一点,但它作为一个嵌入式进程运行得非常好。这里是一个简单的例子,带有Spring和ActiveMQ。将用于测试队列的消息监听器:publicclassTestMessa
我有一个JMS客户端,它正在生成消息并通过JMS队列发送给它的唯一消费者。我想要的是不止一个消费者收到这些消息。我首先想到的是将队列转换为主题,以便当前和新的消费者可以订阅并将相同的消息传递给他们。这显然将涉及在生产者和消费者方面修改当前客户端代码。我还想看看其他选项,例如创建第二个队列,这样我就不必修改现有的消费者。我相信这种方法有一些优点,比如(如果我错了,请纠正我)平衡两个不同队列而不是一个队列之间的负载,这可能会对性能产生积极影响。我想就您可能会看到的这些选项和缺点/优点获得建议。非常感谢任何反馈。 最佳答案 正如你所说,你
我有一个JMS客户端,它正在生成消息并通过JMS队列发送给它的唯一消费者。我想要的是不止一个消费者收到这些消息。我首先想到的是将队列转换为主题,以便当前和新的消费者可以订阅并将相同的消息传递给他们。这显然将涉及在生产者和消费者方面修改当前客户端代码。我还想看看其他选项,例如创建第二个队列,这样我就不必修改现有的消费者。我相信这种方法有一些优点,比如(如果我错了,请纠正我)平衡两个不同队列而不是一个队列之间的负载,这可能会对性能产生积极影响。我想就您可能会看到的这些选项和缺点/优点获得建议。非常感谢任何反馈。 最佳答案 正如你所说,你
如果我们通过“临时队列”使用JMS请求/回复机制,那么该代码是否具有可扩展性?到目前为止,我们不知道我们是否会支持每秒100个请求,还是每秒1000个请求。下面的代码是我正在考虑实现的。它以“同步”方式使用JMS。关键部分是创建“消费者”以指向为此session创建的“临时队列”的位置。我只是不知道使用这种临时队列是否是一种可扩展的设计。destination=session.createQueue("queue:///Q1");producer=session.createProducer(destination);tempDestination=session.createTemp
如果我们通过“临时队列”使用JMS请求/回复机制,那么该代码是否具有可扩展性?到目前为止,我们不知道我们是否会支持每秒100个请求,还是每秒1000个请求。下面的代码是我正在考虑实现的。它以“同步”方式使用JMS。关键部分是创建“消费者”以指向为此session创建的“临时队列”的位置。我只是不知道使用这种临时队列是否是一种可扩展的设计。destination=session.createQueue("queue:///Q1");producer=session.createProducer(destination);tempDestination=session.createTemp
我想知道JMSAPI是否使用任何协议(protocol)来传输消息,或者是否使用自己的协议(protocol)。如果是前者,是哪种协议(protocol)?我在网上阅读了很多文章,但我找不到答案。 最佳答案 标准的JMSAPI只是一组接口(interface);JMS提供者(例如WebSphereMQ)为这些接口(interface)提供自己的实现。对于所有JMS实现,唯一可以肯定的是它们都遵循JMSAPI;除此之外,JMS实现可以使用任何协议(protocol)来履行JMSAPI契约(Contract)。现在,当您特别询问“协议(
我想知道JMSAPI是否使用任何协议(protocol)来传输消息,或者是否使用自己的协议(protocol)。如果是前者,是哪种协议(protocol)?我在网上阅读了很多文章,但我找不到答案。 最佳答案 标准的JMSAPI只是一组接口(interface);JMS提供者(例如WebSphereMQ)为这些接口(interface)提供自己的实现。对于所有JMS实现,唯一可以肯定的是它们都遵循JMSAPI;除此之外,JMS实现可以使用任何协议(protocol)来履行JMSAPI契约(Contract)。现在,当您特别询问“协议(
我正在寻找一种小型但足够高效的轻量级JMS代理解决方案,它没有依赖关系或依赖最少。我的消息传递代码应该在有很多我无法控制的依赖项的环境中运行。因此,将ActiveMQ解决方案与我的自定义类一起部署会很荒谬。 最佳答案 目前我正在调查FFMQ解决方案。它是开源的(GNULGPL许可),只有4个依赖项(commons-logging、log4j、jms和jmx),并且已经足够成熟,可以实现我的目标。 关于java-轻量级JMS代理,我们在StackOverflow上找到一个类似的问题:
我正在寻找一种小型但足够高效的轻量级JMS代理解决方案,它没有依赖关系或依赖最少。我的消息传递代码应该在有很多我无法控制的依赖项的环境中运行。因此,将ActiveMQ解决方案与我的自定义类一起部署会很荒谬。 最佳答案 目前我正在调查FFMQ解决方案。它是开源的(GNULGPL许可),只有4个依赖项(commons-logging、log4j、jms和jmx),并且已经足够成熟,可以实现我的目标。 关于java-轻量级JMS代理,我们在StackOverflow上找到一个类似的问题:
我在Java中使用HTTPBASIC身份验证。我的Servlet发送了一条JMS消息,但我需要在创建连接时提供用户和密码来验证自己:javax.jms.ConnectionFactory.createConnection(Stringusername,Stringpassword)我可以从HttpServletRequest.getUserPrincipal()中检索用户名。但似乎没有办法找回密码。我该如何解决? 最佳答案 您所指的密码很可能与用户在登录时提供的密码不同。虽然问题中的用例不清楚,但您似乎正在尝试使用外部用户提供的用户