SSM整合RabbitMq

引入依赖

		<!--rabbitmq依赖(spring版本为4.0.2.RELEASE) -->
        <dependency>
            <groupId>org.springframework.amqp</groupId>
            <artifactId>spring-rabbit</artifactId>
            <version>1.3.5.RELEASE</version>
        </dependency>

创建一个Rabbitmq配置文件(rabbit-config.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: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/rabbit
     http://www.springframework.org/schema/rabbit/spring-rabbit-1.2.xsd">


    <!--配置connection-factory,指定连接rabbit server参数 -->
    <rabbit:connection-factory id="connectionFactory" username="guest" 
    	password="guest" host="127.0.0.1" port="5672"/>


    <!--通过指定下面的admin信息,当前producer中的exchange和queue会在rabbitmq服务器上自动生成 -->
    <rabbit:admin id="connectAdmin" connection-factory="connectionFactory" />

    <!--定义queue队列 -->
    <rabbit:queue name="queueTest" durable="true" auto-delete="false" exclusive="false" declared-by="connectAdmin" />
    
	<!--定义queue队列 -->
    <rabbit:queue name="queueTest1" durable="true" auto-delete="false" exclusive="false" declared-by="connectAdmin" />

    <!-- 定义direct exchange(也就是交换机),绑定queueTest队列(queueTest名称可以自定义) -->
    <rabbit:direct-exchange name="exchangeTest" durable="true" auto-delete="false" declared-by="connectAdmin">
        <rabbit:bindings>
        	<!--绑定定义好的队列(可绑定多个)-->
            <rabbit:binding queue="queueTest" key="queueTestKey"></rabbit:binding>
            <rabbit:binding queue="queueTest1" key="queueTestKey1"></rabbit:binding>
        </rabbit:bindings>
    </rabbit:direct-exchange>

    <!--定义rabbit template用于数据的接收和发送 将amqpTemplate对象绑定exchange中交换机-->
    <rabbit:template id="amqpTemplate" connection-factory="connectionFactory" exchange="exchangeTest" />

    <!-- 消息接收者 -->
    <bean id="messageReceiver" class="com.service.MessageConsumer"></bean>

    <!-- queue litener 观察 监听模式 当有消息到达时会通知监听在对应的队列上的监听对象,acknowledge="manual"设置消息手动确认
    ,prefetch 设置消息限流(1.0版本默认为1条,2.0版本默认为250条,设置后执行完后剩余消息才会进行接收,设置多少按照项目情况自行设置) -->
    <rabbit:listener-container connection-factory="connectionFactory" acknowledge="manual" prefetch="100">
        <rabbit:listener queues="queueTest" ref="messageReceiver" />
        <rabbit:listener queues="queueTest1" ref="messageReceiver" />
    </rabbit:listener-container>

</beans>

在配置文件spring-content.xml中引入rabbitmq的配置文件

<import resource="classpath*:rabbit-config.xml" />

定义消息生产者类

/**
 * @author 消息生产者
 * @Package
 * @date 2023/10/08 15:55
 */
@Service("MessageProducer")
public class MessageProducer {

	//引入AmqpTemplate对象,配置文件中定义好绑定的交换机
    @Resource(name = "amqpTemplate")
    private AmqpTemplate amqpTemplate;

	//发送登录消息方法	
    public void sendLoginMessage(Object message) throws IOException {
        amqpTemplate.convertAndSend("queueTestKey", message);
    }

	//发送退出登录消息方法	
    public void sendOutMessage(Object message) throws IOException {
        amqpTemplate.convertAndSend("queueTestKey1", message);
    }

}

定义消息消费者

/**
 * @author 消息消费者
 * @Package
 * @date 2023/10/8 15:53
 */
public class MessageConsumer implements MessageListener {

    @Override
    public void onMessage(Message message) {
        System.out.println("message------->:" + new String(message.getBody(), Charset.forName("utf-8")));
    }
}

定义测试接口

/**
 * 接口
 */
@Controller
@RequestMapping("/api")
public class ApiController extends MyControl {

	@Autowired
    private MessageProducer messageProducer;

	@RequestMapping(value = "/getTestMq")
    @ResponseBody
    public Result getTestMq(HttpServletRequest request) throws IOException {
        messageProducer.sendLoginMessage("登录成功");
        messageProducer.sendOutMessage("退出登录");
        return Result.success("测试成功");
    }
    
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值