spring+activemq+maven集成

1、下载
ActiveMQ的最新版本是5.10.0,但由于我们内网下载存在问题,所以目前通过内网只能下载到5.9.0,下载地址:http://activemq.apache.org/activemq-590-release.html

2、安装

如果是在windows系统中运行,可以直接解压apache-activemq-5.9.0-bin.zip,并运行bin目录下的activemq.bat文件,此时使用的是默认的服务端口:61616和默认的console端口:8161。
         如果是在linux或unix下运行,在bin目录下执行命令:./activemq setup
3、修改ActiveMQ的服务端口和console端口
         A、修改服务端口:打开conf/activemq.xml文件,修改以下红色字体部分
        <transportConnectors>
           <transportConnector name="openwire" uri="tcp://10.42.220.72:61618"discoveryUri="multicast://default"/>
       </transportConnectors>
 
B、修改console的地址和端口:打开conf/jetty.xml文件,修改以下红色字体部分
    <bean id="jettyPort"class="org.apache.activemq.web.WebConsolePort"init-method="start">
       <property name="port" value="8162"/>
 </bean>

activemq 5.9.0+spring4.1.6

<span style="white-space:pre">			</span><!-- activemq 消息服务器 -->
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-jms</artifactId>
				<version>4.1.6.RELEASE</version>
				<scope>compile</scope>
			</dependency>
			<dependency>
				<groupId>javax.jms</groupId>
				<artifactId>jms</artifactId>
				<version>1.1</version>
			</dependency>
			<dependency>
			  <groupId>org.apache.activemq</groupId>
			  <artifactId>activemq-all</artifactId>
			  <version>5.9.0</version>
			  <scope>compile</scope>
			</dependency>


配置文件:

activemq.properties

jms.broker.url=tcp://localhost:61616
jms.queue.name=msgqueue

JMSConfigure.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:amq="http://activemq.apache.org/schema/core"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core-5.8.0.xsd">
 
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="order" value="1" />
        <property name="ignoreUnresolvablePlaceholders" value="true" />
        <property name="location">
            <value>classpath:activemqconfig.properties</value>
        </property>
    </bean>

    <!-- Activemq connection factory -->
    <bean id="amqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <constructor-arg index="0" value="${jms.broker.url}"/>
        <property name="useAsyncSend" value="true"/>
    </bean>


    <!-- ConnectionFactory Definition -->
    <bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
        <constructor-arg ref="amqConnectionFactory"/>
    </bean>


    <!--  Default Destination Queue Definition-->
    <bean id="defaultDestination" class="org.apache.activemq.command.ActiveMQQueue">
        <constructor-arg index="0" value="${jms.queue.name}"/>
    </bean>


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

<!-- 自定义发送消息对象 -->
    <!-- Message Sender Definition -->
    <bean id="messageSender" class="com.lvyuanj.core.activemq.handle.MessageSender">
        <constructor-arg index="0" ref="jmsTemplate"/>
    </bean>
    
    <!-- 自定义接受消息对象 -->
    <!-- Message Receiver Definition -->
    <bean id="messageReceiver" class="com.lvyuanj.core.activemq.handle.MessageReceiver">
    </bean>
    <bean class="org.springframework.jms.listener.SimpleMessageListenerContainer">
        <property name="connectionFactory" ref="connectionFactory"/>
        <property name="destinationName" value="${jms.queue.name}"/>
        <property name="messageListener" ref="messageReceiver"/>
    </bean>
</beans>

发送消息类:

package com.lvyuanj.core.activemq.handle;


import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Component;


@Component
public class MessageSender {


    private final JmsTemplate jmsTemplate;


    public MessageSender(final JmsTemplate jmsTemplate) {
        this.jmsTemplate = jmsTemplate;
    }


    public void send(final String text) {
        jmsTemplate.convertAndSend(text);
        System.out.println("send: " + text);
    }
}

接受消息类:

package com.lvyuanj.core.activemq.handle;


import java.text.SimpleDateFormat;
import java.util.Date;


import javax.jms.*;


public class MessageReceiver implements MessageListener {

private SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    public void onMessage(Message message) {
        if(message instanceof TextMessage) {
            TextMessage textMessage = (TextMessage) message;
            try {
                String text = textMessage.getText();
                System.out.println(String.format("Received: %s",text+",time:"+sf.format(new Date())));
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            } catch (JMSException e) {
                e.printStackTrace();
            }
        }
    }
}

发送测试类:

package com.lvyuanj.core.app;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.util.StringUtils;
import com.lvyuanj.core.activemq.handle.MessageSender;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class SenderApp
{
    public static void main( String[] args ) throws IOException {
        start("JMS-Configuration.xml");
    }


    public static void start(String configLocation) throws IOException {
        MessageSender sender = getMessageSender(configLocation);
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));


        System.out.println("Please input your message:");
        String text = br.readLine();
        while (!StringUtils.isEmpty(text)) {
            System.out.println(String.format("send message: %s", text));
            sender.send(text);
            text = br.readLine();
        }
    }


    public static MessageSender getMessageSender(String configLocation) {
        ApplicationContext context = new ClassPathXmlApplicationContext(configLocation);
        return (MessageSender) context.getBean("messageSender");
    }
}

接收测试类:

package com.lvyuanj.core.app;

import org.springframework.context.support.ClassPathXmlApplicationContext;


public class ReceiverApp {
    public static void main( String[] args )
    {
        new ClassPathXmlApplicationContext("JMS-Configuration.xml");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值