环境 win7、spring4
一、win7下安装mq的测试服务环境
下载地址:http://www.erlang.org/download/otp_win32_R16B03.exe;
http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.3/rabbitmq-server-3.2.3.exe
开启mq管理工具:
cmd : "C:Program
Files (x86)RabbitMQ
Server
abbitmq_server-3.2.3sbin
abbitmq-plugins.bat" enable
rabbitmq_management
要重启服务才能生效,可以执行
cmd : net stop
RabbitMQ && net start RabbitMQ
创建用户:
rabbitmqctl.bat add_user nihoutao nihoutao@2017
add_user 后是账号 后是密码
给角色和权限:
rabbitmqctl.bat set_user_tags nihoutao administrator
rabbitmqctl.bat set_permissions -p / nihoutao ".*" ".*" ".*"
查看用户:
此时用创建的账号登录mq管理系统
二、在项目中配置环境
pom.xml
<dependencies>
<!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client -->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.retry/spring-retry -->
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
<version>1.2.1.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.amqp/spring-rabbit -->
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>1.5.1.RELEASE</version>
</dependency>
</dependencies>
spring配置文件:
<?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:context="http://www.springframework.org/schema/context"
xmlns:rabbit="http://www.springframework.org/schema/rabbit"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/rabbit
http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<!-- 加载配置属性文件 -->
<context:property-placeholder ignore-unresolvable="true" location="classpath:config.properties" />
<!-- 连接服务配置 如果MQ服务器在远程服务器上,请新建用户用新建的用户名密码 guest默认不允许远程登录 -->
<rabbit:connection-factory id="connectionFactory"
host="${rabbitmq.host}"
username="${rabbitmq.username}"
password="${jdbc.password}"
port="${rabbitmq.port}"
virtual-host="/" channel-cache-size="5" />
<!-- 配置admin,自动根据配置文件生成交换器和队列,无需手动配置 -->
<rabbit:admin connection-factory="connectionFactory" />
<!-- queue 队列声明 -->
<rabbit:queue durable="true" auto-delete="false"
exclusive="false" name="spring.queue.tag" />
<!-- exchange queue binging key 绑定 -->
<rabbit:direct-exchange name="spring.queue.exchange"
durable="true" auto-delete="false">
<rabbit:bindings>
<rabbit:binding queue="spring.queue.tag" key="spring.queue.tag.key" />
</rabbit:bindings>
</rabbit:direct-exchange>
<!-- spring amqp默认的是jackson 的一个插件,
目的将生产者生产的数据转换为json存入消息队列,
由于Gson的速度快于jackson,这里替换为Gson的一个实现 -->
<bean id="jsonMessageConverter" class="com.nihoutao.sent.Gson2JsonMessageConverter" />
<!-- spring template声明 -->
<rabbit:template id="amqpTemplate" exchange="spring.queue.exchange"
routing-key="spring.queue.tag.key" connection-factory="connectionFactory"
message-converter="jsonMessageConverter" />
</beans>
测试
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
public class Send {
public static void main(String[] args) throws Exception{
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
/*获取tcp其中的一个通道后 进行队列声明
参数1 队列名字
参数2 是否持久化
参数3 只被一个链接使用,链接关闭后删除
参数4 最后一个消费者退订后删除*/
channel.queueDeclare("wuqidi", false, false, false, null);
/*发布到队列中
* 参数1 交换机 默认交换机
* 参数2 路由key
* 参数3 参数
* 参数4 发送的信息 proCon
* */
channel.basicPublish("", "wuqidi", null, "十九大重要会议在即".getBytes());
channel.close();
connection.close();
}
}
参考:
http://www.cnblogs.com/shanyou/p/4067250.html