消息机制——MQ

本文介绍如何在项目中集成RocketMQ消息中间件,包括配置依赖、服务启动及消息队列的基本设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 通过消息Producer(生产者)发送消息,必须初始化就启动
  2. Consumer(消费者)监控消息队列,接收并处理消息,初始化就启动
根项目pom.xml增加
<rocketmq-client.version>4.1.0-incubating-SNAPSHOT</rocketmq-client.version>
<dependency>
                <groupId>org.apache.rocketmq</groupId>
                <artifactId>rocketmq-client</artifactId>
                <version>${rocketmq-client.version}</version>
            </dependency>

service项目pom.xml增加
<dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-client</artifactId>
        </dependency>
config.properties配置
#rocketmq config
rocketmq.address=tgdev-mq.hrocloud.com:9876
rocketmq.group.log=tiangong_xxxxxx
#tg test
#rocketmq.address=tgtest-mq.hrocloud.com:9876
#rocketmq.group.log=tiangong_syslog

和service平级建立mqservice包,所有MQ的专有服务类,放到该包中
application-service.xml修改参考如下:

<context:component-scan base-package="com.hrocloud.common">
        <context:include-filter type="regex" expression="com.hrocloud.common.service"/>
        <context:include-filter type="regex" expression="com.hrocloud.common.mqservice"/>
    </context:component-scan>
### 消息队列 MQ 消息机制原理 消息队列(Message Queue, MQ)的核心在于其能够实现生产者与消费者之间的解耦,从而提升系统的可扩展性、可靠性和性能。以下是关于消息队列的消息机制及其工作原理的详细说明: #### 1. 生产者-消费者模型 消息队列采用经典的 **生产者-消费者模型** 来管理消息流。在这种模型下,生产者负责生成消息并将它们发送到队列中;消费者则从队列中获取这些消息并进行处理[^3]。 #### 2. 异步通信 消息队列的一个重要特性是支持异步通信。当生产者将消息发送到队列后,它可以立即继续执行后续操作而不必等待消费者的响应。这种机制显著降低了系统间的耦合程度,并提升了整体效率[^3]。 #### 3. 消息持久化 为了保障消息的安全性,大多数消息队列实现了 **消息持久化** 功能。这意味着即使发生系统故障或重启,已保存的消息也不会丢失。具体来说,消息会被写入磁盘或其他可靠的存储介质中以供恢复使用。 #### 4. 确认机制 (Acknowledge Mechanism) 为了避免因网络中断等原因造成的数据遗失问题,许多高级别的消息中间件引入了确认机制。一旦消费者成功接收到某条记录并且完成相应业务逻辑之后,它需要向服务器反馈一个 ACK信号表示该任务已经结束。如果没有得到及时回应,则这条未被妥善处置的信息可能会再次推送给另一个实例或者回到原始位置重新排队等候处理。 #### 5. 幂等性设计 由于存在各种潜在错误情况可能导致同一条信息多次送达目标端口处的情况出现,在实际应用过程中往往还需要考虑如何应对这种情况的发生——这就是所谓的“幂等性”。通过精心的设计方案使得即便面对重复请求也能保证最终状态的一致性是非常必要的。 #### 6. 主题模式与路由键 除了基本的一对一消息传递外,某些复杂应用场景可能涉及到一对多甚至广播式的通讯需求。此时可以通过定义特定的主题以及相应的路由规则来满足这类特殊场合下的功能要求。例如RabbitMQ就提供了基于交换器(exchange)的概念配合不同的binding keys 实现灵活的消息分发策略[^2]。 #### 7. 发布/订阅模式 vs 点对点模式 两种常见的消息传输方式分别是发布/订阅(Publish-Subscribe Pattern) 和点对点(Point-to-Point Pattern) 。前者允许同一个主题下的所有订阅者都能够接收到发布的每一份副本; 而后者则是确保每次只有一个接收方能拿到指定项目的内容[^4]。 --- ```python import pika connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel() # 创建队列 channel.queue_declare(queue='hello') def callback(ch, method, properties, body): print(f"Received {body}") # 设置消费函数 channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True) print('Waiting for messages...') channel.start_consuming() ``` 以上是一个简单的 Python 示例程序展示如何利用 Pika 库连接 RabbitMQ 并设置基础的消息监听流程。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值