标签: activemq-classic

获取ActiveMQ队列长度的任何简单方法?

如何使用Java获取ActiveMQ中的队列长度(发送到队列的未消耗消息的数量)?

java activemq-classic jms

13
推荐指数
1
解决办法
2万
查看次数

高性能JMS消息传递

我阅读了今年UberConf的幻灯片,其中一位发言人提出Spring JMS为您的消息队列系统增加了性能开销的论点,但我没有看到任何证据支持幻灯片.发言者还说明点对点比传统的"发布 - 订阅"方法更快,因为每个消息只发送一次而不是广播给每个消费者.

我想知道是否有经验丰富的Java消息传递专家可以在这里权衡并澄清一些技术细节:

  • 使用Spring JMS而不仅仅是纯JMS实际上是否会产生性能开销?如果是这样,它是如何以及在何处引入的?它有什么办法吗?
  • 有什么实际证据支持P2P比pub-sub模型更快,如果是这样的话,是否有任何情况下你想要通过P2P发布sub-sub(即为什么变慢?!?)?

java messaging spring activemq-classic jms

13
推荐指数
1
解决办法
2万
查看次数

使用JMS(ActiveMQ)进行单元测试

如何使用JMS进行单元测试?这是事实吗?

我google了一些东西 - JMS的单元测试:http ://activemq.apache.org/how-to-unit-test-jms-code.html - jmsTemplate:activemq.apache.org/jmstemplate-gotchas.html - mockRunner:mockrunner .sourceforge.net /

你对我有什么好的经验和建议吗?

unit-testing activemq-classic jms mocking jmstemplate

12
推荐指数
2
解决办法
1万
查看次数

ApacheActiveMQ和ApacheActiveMQApollo之间的区别

Apache ActiveMQ与Apache ActiveMQ Apollo有什么区别?

Apollo文档说:"ActiveMQ Apollo是一个更快,更可靠,更易于维护的消息代理,它是从原始ActiveMQ的基础构建的.它使用完全不同的线程和消息调度架构来实现这一点."但是没有java样本代码和良好的用户指南.

有人在实时环境中使用ApacheActiveMQApollo吗?对原始ActiveMQ做得更好吗?

java activemq-classic jms messagebroker apollo

12
推荐指数
1
解决办法
6012
查看次数

Java运行时环境检测到致命错误.EXCEPTION_ACCESS_VIOLATION

我有java 1.6,maven 2,activeMQ 5.5和testng功能测试.当我在Idea中启动它然后确定,但是当我尝试使用maven从控制台启动它们然后在尝试通过activeMQ发送消息后进程暂停,并且在一段时间后崩溃并在日志中出现以下错误:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000006d92f7a6, pid=5716, tid=7000
#
# JRE version: 6.0_27-b07
# Java VM: Java HotSpot(TM) 64-Bit Server VM (20.2-b06 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# V  [jvm.dll+0x9f7a6]
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

---------------  T H R E A D  ---------------

Current thread (0x00000000072b6000):  JavaThread "ActiveMQ Transport: …
Run Code Online (Sandbox Code Playgroud)

java testng activemq-classic fatal-error maven

12
推荐指数
1
解决办法
3万
查看次数

12
推荐指数
2
解决办法
8988
查看次数

如何为多个主题配置多个JmsListener

在我的项目中,我添加了两个不同的JmsListener但是当我在ActiveMQ面板中运行项目时,只有其中一个主题有消费者!

那么我应该为每个JmsListener添加单独的jmsListenerContainerFactory配置吗?

@JmsListener(destination = "foo1")
public void foo1(final Message jsonMessage) throws JMSException {
    ...
}

@JmsListener(destination = "foo2")
public void foo12(final Message jsonMessage) throws JMSException {
    ...
}
Run Code Online (Sandbox Code Playgroud)

编辑:这是来自JMS配置文件:

@Configuration
@EnableJms
public class FooJmsConfig {

    @Bean
    public ActiveMQConnectionFactory connectionFactory() {
        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
        connectionFactory.setBrokerURL(BROKER_URL);
        connectionFactory.setPassword(BROKER_USERNAME);
        connectionFactory.setUserName(BROKER_PASSWORD);
        connectionFactory.setUseCompression(true);
        connectionFactory.setClientID("FPP_API");
        connectionFactory.setConnectionIDPrefix("DRR");
        connectionFactory.setUseAsyncSend(true);
        return connectionFactory;
    }

    @Bean
    public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() {
        DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory());
        factory.setConcurrency("1-1");
        factory.setPubSubDomain(true);
        factory.setSubscriptionDurable(true);
        return factory;
    }
}
Run Code Online (Sandbox Code Playgroud)

java activemq-classic jms

12
推荐指数
2
解决办法
2458
查看次数

Apache ActiveMQ 5.3 - 如何配置队列以拒绝重复的消息?

我需要队列来强制执行不重复的策略.可能吗?如果是这样,怎么样?(我一直在谷歌搜索几个小时......)

编辑:

ActiveMQSession实现有以下几行:

        // transform to our own message format here
            ActiveMQMessage msg = ActiveMQMessageTransformation.transformMessage(message, connection);

        // Set the message id.
        if (msg == message) {
            msg.setMessageId(new MessageId(producer.getProducerInfo().getProducerId(), sequenceNumber));
        } else {
            msg.setMessageId(new MessageId(producer.getProducerInfo().getProducerId(), sequenceNumber));
            message.setJMSMessageID(msg.getMessageId().toString());
        }
Run Code Online (Sandbox Code Playgroud)

ActiveMQMessageTransformation是可插入的(您可以设置它),但以下if语句是一个相当无可争议的.

任何想法,除了改变他们的代码?

activemq-classic

11
推荐指数
1
解决办法
7099
查看次数

如何在activemq中设置Monitoring队列

我在ActiveMQ页面中读到,使用JMX我们可以监视activemq中的队列.如果队列在ActiveMQ中有消息(深度高)或服务间隔很高,我们如何得到通知.在unix环境中不使用任何shell脚本.是否可以通过Java程序?如果是的话,请给我一些想法来完成这项工作.

monitoring activemq-classic jmx

11
推荐指数
2
解决办法
1万
查看次数

使用Spring Boot设置Camel和Activemq

我在几个例子中注意到,使用camel配置activemq的常用方法是使用以下bean.我想知道Spring Boot是否已经默认配置了这些bean.我知道如果activemq jar在类路径上,则会创建一个默认的连接工厂,但是下面的内容呢?

<bean id="jmsConnectionFactory"
        class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="tcp://localhost:61616"/>
  </bean>

  <bean id="pooledConnectionFactory"
        class="org.apache.activemq.pool.PooledConnectionFactory"
        init-method="start" destroy-method="stop">
    <property name="maxConnections" value="8"/>
    <property name="connectionFactory" ref="jmsConnectionFactory"/>
  </bean>

  <bean id="jmsConfig"
        class="org.apache.camel.component.jms.JmsConfiguration">
    <property name="connectionFactory" ref="pooledConnectionFactory"/>
    <property name="concurrentConsumers" value="10"/>
  </bean>

  <bean id="jms"
        class="org.apache.activemq.camel.component.ActiveMQComponent">
    <property name="configuration" ref="jmsConfig"/>
    <property name="transacted" value="true"/>
    <property name="cacheLevelName" value="CACHE_CONSUMER"/>
  </bean>
Run Code Online (Sandbox Code Playgroud)

要么

@Bean
    public ActiveMQConnectionFactory getConnectionFactory() {
        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
        connectionFactory.setBrokerURL(brokerURL);
        return connectionFactory;
    }

    @Bean(initMethod = "start", destroyMethod = "stop")
    public PooledConnectionFactory getPooledConnectionFactory() {
        PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory();
        pooledConnectionFactory.setMaxConnections(maxConnections);
        pooledConnectionFactory.setConnectionFactory(getConnectionFactory());
        return pooledConnectionFactory;
    } …
Run Code Online (Sandbox Code Playgroud)

java activemq-classic apache-camel spring-boot

11
推荐指数
1
解决办法
5181
查看次数