ActiveMq --集成配置问题及注意事项

  1. 集成配置
	--消费者
 <bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="tcp://192.168.74.200:61616"></property>
    </bean>

    <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
        <property name="targetConnectionFactory" ref="activeMQConnectionFactory"></property>
    </bean>

    <bean id="queue" class="org.apache.activemq.command.ActiveMQQueue">
        <constructor-arg value="spring-queue"></constructor-arg>
    </bean>

    <bean id="topic" class="org.apache.activemq.command.ActiveMQTopic">
        <constructor-arg value="spring-topic"></constructor-arg>
    </bean>

    <bean id="myListener" class="com.study.spring.MyListener"></bean>

    <bean  class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="connectionFactory" ref="connectionFactory"></property>
        <property name="destination" ref="topic"></property>
        <property name="messageListener" ref="myListener"></property>
    </bean>
	--生产者
<bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value=""></property>
    </bean>

    <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
        <property name="targetConnectionFactory" ref="activeMQConnectionFactory"></property>
    </bean>

    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
        <property name="connectionFactory" ref="connectionFactory"></property>
    </bean>

    <bean id="queue" class="org.apache.activemq.command.ActiveMQQueue">
        <constructor-arg value="spring-queue"></constructor-arg>
    </bean>

    <bean id="topic" class="org.apache.activemq.command.ActiveMQTopic">
        <constructor-arg value="spring-topic"></constructor-arg>
    </bean>
  1. 消费者接收消息 实现MessageListener监听方法 onMessage
  2. 关于消费者应答方式
    成功则使用acknowledge应答 消费消息
  3. ActiveMQ支持事物消息 当开启事物时 要么同时成功提交 要么同时失败 失败使用session.rollback 提交时使用session.commit
  4. 关于不使用spring配置时 Active怎么使用
//生产者

        //创建连接工厂
        ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("tcp://192.168.74.200:61616");
        //从连接工厂获取连接
        Connection connection = connectionFactory.createConnection();
        //连接开始
        connection.start();
        //设置两个参数1.是否支持事物 2.关于应答方式
        //true支持 Session.AUTO_ACKNOWLEDGE自动应答  Session.CLIENT_ACKNOWLEDGE 客户端应答
        //必须调用javax.jms.Message的acknowledge方法。jms服务器才会删除消息。
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        //创建一对一模式 输入名称 用于消费者接受
        Queue queue = session.createQueue("test-topic");
        //创界消费这 参数为队列名称
        MessageProducer producer = session.createProducer(queue);
        //创界需要返回的信息
        TextMessage message = session.createTextMessage("测试一对一模式");
        //发送消息
        producer.send(message);

        producer.close();
        session.close();
        connection.close();

//消费者
 //1、创建工厂连接对象,需要制定ip和端口号
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.74.200:61616");
        //2、使用连接工厂创建一个连接对象
        Connection connection = connectionFactory.createConnection();
        //3、开启连接
        connection.start();
        //4、使用连接对象创建会话(session)对象
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        //5、使用会话对象创建目标对象,包含queue和topic(一对一和一对多)
        Topic topic = session.createTopic("test-topic");
        //6、使用会话对象创建生产者对象
        MessageConsumer consumer = session.createConsumer(topic);
        //7、向consumer对象中设置一个messageListener对象,用来接收消息
        consumer.setMessageListener(new MessageListener() {

            public void onMessage(Message message) {
                // TODO Auto-generated method stub
                if(message instanceof TextMessage){
                    TextMessage textMessage = (TextMessage)message;
                    try {
                        System.out.println(textMessage.getText());
                    } catch (JMSException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
        });
        //8、程序等待接收用户消息
        System.in.read();
        //9、关闭资源
        consumer.close();
        session.close();
        connection.close();

你可能感兴趣的:(ActiveMq,activemq)