<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                # rabbitmq消息隊列集成2.4+ >[info] 采用rabbitmq實現消息隊列,應用場景:功能解耦、流量削峰、異步處理 > 示例代碼:`jeecg-cloud-module\jeecg-cloud-test\jeecg-cloud-test-rabbitmq` [TOC] ## 前提:搭建好rabbitmq服務 [# docker安裝RabbitMq](https://my.oschina.net/jeecg/blog/4729143) 訪問下RabbitM后臺 http://localhost:15672 ![](https://img.kancloud.cn/7d/7d/7d7dac74c3b33b5ac98995b2b476ad99_1600x868.png) >[warning] 重要:JeecgBoot啟動會自動創建兩個交換機 `jeecg.delayed.exchange` `jeecg.direct.exchange` ,如果沒有生成,請手工創建。 ![](https://img.kancloud.cn/4b/65/4b65e69679b4bfb5fdf15cf47db05ff9_651x67.png) ## 第一步:引入消息隊列starter依賴 ~~~ <!--引入rabbitmq Starter--> <dependency> <groupId>org.jeecgframework.boot</groupId> <artifactId>jeecg-boot-starter-rabbitmq</artifactId> </dependency> ~~~ ## 第二步:RabbitMqClient用法(推送消息) 為了簡化MQ使用做了封裝,提供推送消息的簡易工具類 ``` @Autowired private RabbitMqClient rabbitMqClient; ``` **常用方法** - 立即發送 void sendMessage(String queueName, Object params) - 發送延時消息 void sendMessage(String queueName, Object params, Integer expiration) - 發送遠程消息 void publishEvent(String handlerName, BaseMap params) **方法參數統一說明** | 參數名 | 參數描述 | 參數類型 | --- | --- |--- | | queueName | 隊列名稱(隊列自動創建,無需手動)| String | handlerName| 參數|自定義消息處理器beanName | params| 參數|Object | expiration| 延遲時間| int(毫秒) >[warning] queueName不需要去MQ中創建,jeecg做了封裝會自動創建。 ## 第三步: 編寫示例(簡單3步完成消息的發送和接收) 1. **注入消息發送客戶端** ``` @Autowired private RabbitMqClient rabbitMqClient; ``` 2. **發送消息示例代碼** ``` BaseMap map = new BaseMap(); map.put("orderId", "12345"); rabbitMqClient.sendMessage("test", map); //延遲10秒發送 rabbitMqClient.sendMessage("test", map,10000); ``` 3. **編寫消息監聽監聽器** 使用注解`@RabbitListener(queues = "test2")`定義接收者(可以定義N個接受者,消息會均勻的發送到N個接收者中) ~~~ import com.rabbitmq.client.Channel; import lombok.extern.slf4j.Slf4j; import org.jeecg.boot.starter.rabbitmq.core.BaseRabbiMqHandler; import org.jeecg.boot.starter.rabbitmq.listenter.MqListener; import org.jeecg.common.annotation.RabbitComponent; import org.jeecg.common.base.BaseMap; import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.support.AmqpHeaders; import org.springframework.messaging.handler.annotation.Header; @Slf4j @RabbitListener(queues = "test3") @RabbitComponent(value = "testListener3") public class DemoRabbitMqListener3 extends BaseRabbiMqHandler<BaseMap> { @RabbitHandler public void onMessage(BaseMap baseMap, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag) { super.onMessage(baseMap, deliveryTag, channel, new MqListener<BaseMap>() { @Override public void handler(BaseMap map, Channel channel) { String orderId = map.get("orderId").toString(); log.info("業務處理3:orderId:" + orderId); } }); } } ~~~ 或者 ~~~ import com.rabbitmq.client.Channel; import lombok.extern.slf4j.Slf4j; import org.jeecg.boot.starter.rabbitmq.core.BaseRabbiMqHandler; import org.jeecg.boot.starter.rabbitmq.listenter.MqListener; import org.jeecg.common.annotation.RabbitComponent; import org.jeecg.common.base.BaseMap; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.support.AmqpHeaders; import org.springframework.messaging.handler.annotation.Header; @Slf4j @RabbitComponent(value = "testListener2") public class DemoRabbitMqListener2 extends BaseRabbiMqHandler<BaseMap> { @RabbitListener(queues = "test2") public void onMessage(BaseMap baseMap, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag) { super.onMessage(baseMap, deliveryTag, channel, new MqListener<BaseMap>() { @Override public void handler(BaseMap map, Channel channel) { String orderId = map.get("orderId"); log.info("業務處理2:orderId:" + orderId); } }); } } ~~~ N個接受者效果圖 ![](https://img.kancloud.cn/d0/bb/d0bbd0422f37eccf2786c2827516d3e0_1307x1242.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看