rabbitmq用法--直接傳送訊息給佇列
rabbitmq 術語:
ConnectionFactory、Connection、Channel都是RabbitMQ對外提供的API中最基本的物件。
Connection是RabbitMQ的socket連結,它封裝了socket協議相關部分邏輯。
ConnectionFactory為Connection的製造工廠。
Channel是我們與RabbitMQ打交道的最重要的一個介面,我們大部分的業務操作是在Channel這個介面中完成的,包括定義Queue、定義Exchange、繫結Queue與Exchange、釋出訊息接收訊息等。
Queue(佇列)是RabbitMQ的內部物件,用於儲存訊息,用下圖表示。
多個消費者可以訂閱同一個Queue,這時Queue中的訊息會被平均分攤給多個消費者進行處理,而不是每個消費者都收到所有的訊息並處理。
第一種: 直接傳送訊息給佇列
直接傳送訊息給佇列不需要指定exchange ,預設為空。直接傳送訊息給佇列之前需要先建立此佇列。
程式碼如下:
private static final String HOST = "XXXX"; private static final String USERNAME = "xxx"; private static final String PASSWORD = "xxx"; public static void main(String[] args) throwsIOException, TimeoutException { ConnectionFactory connectionFactory = new ConnectionFactory(); connectionFactory.setHost(HOST); connectionFactory.setUsername(USERNAME); connectionFactory.setPassword(PASSWORD); Connection connection = connectionFactory.newConnection(); Channel channel = connection.createChannel();
// 一定先建立佇列,否則系統不會報錯,但是資訊被丟棄了。 channel.queueDeclare("WSX", false,false,false,null); channel.basicPublish("","WSX",null,"wsx".getBytes()); channel.close(); connection.close(); }消費者consumer程式碼:這裡切記,接收到訊息之後要呼叫channel.basicAck 返回給伺服器已經接收到訊息,否則此訊息在佇列中不會刪除
public static void main(String[] args) throws IOException, TimeoutException { ConnectionFactory connectionFactory = new ConnectionFactory(); connectionFactory.setHost(HOST); connectionFactory.setUsername(USERNAME); connectionFactory.setPassword(PASSWORD); Connection connection = connectionFactory.newConnection(); Channel channel = connection.createChannel(); channel.queueDeclare("WSX", false,false,false,null); channel.basicConsume("WSX",new ConsumerImpl(channel)); }
public class ConsumerImpl implements Consumer{ private Channel channel; public ConsumerImpl(Channel channel){ this.channel = channel; } public void handleConsumeOk(String consumerTag) { System.out.println("isOk"); } public void handleCancelOk(String consumerTag) { } public void handleCancel(String consumerTag) throws IOException { } public void handleShutdownSignal(String consumerTag, ShutdownSignalException sig) { } public void handleRecoverOk(String consumerTag) { System.out.println("recoverOk"); } public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { System.out.println(new String(body)); System.out.println(envelope.getDeliveryTag()); channel.basicAck(envelope.getDeliveryTag(),false); } }
相關推薦
rabbitmq用法--直接傳送訊息給佇列
rabbitmq 術語: ConnectionFactory、Connection、Channel都是RabbitMQ對外提供的API中最基本的物件。 Connection是RabbitMQ的socket連結,它封裝了socket協議相關部分邏輯。 ConnectionFa
RabbitMQ初學之二:直接傳送訊息到佇列
一. 背景 總前提:佇列無論是在生產者宣告還是在消費者宣告,只有聲明瞭,才能在RabbitMQ的管理介面看到該佇列 生產者直接傳送訊息到佇列,消費者直接消費佇列中的訊息,而不用指定exchange並繫結。這種需求下,分三種情況:① 生產者宣告佇列(指定佇列名稱),消費者不指定佇列,而是直接消費生產者指
RabbitMQ訊息通訊,生產者傳送訊息給指定的消費者的訊息佇列
上一篇文章描述了,通過使用廣播式的通訊方式,讓生產者把訊息廣播給每一個消費者,本節我們介紹另外一個方式,生產者可以指定消費者,把訊息傳送給它: client.py #!/usr/bin/env python import pika import sys connectio
使用python定時傳送訊息給微信好友
以前以為微信沒有介面和python連線,但是最近發現了個庫wechat_sender,然後就稍微學習了下。還不深入,寫了一個簡易的測試程式作為初步進入。 需要用到的庫有 threading, wxpy前者需要用到Timer這個函式,作為定時
React Native之Android原生通過DeviceEventEmitter傳送訊息給js
1 問題 Android原生向js發訊息,並且可以攜帶資料 2 實現原理 Android原生可以使用RCTEventEmitter來註冊事件,然後這裡需要指定事件的名字,然後在js那端進行監聽同樣事件的名字監聽,就可以收到訊息得到資料 Android註冊關
rabbitmq二---均勻分配訊息給每個接收者,prefetchCount設定均勻分配的個數
傳送端的程式如下: channel.basicPublish("", TASK_QUEUE_NAME,MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes()); //傳送(使用預設交換機,routing-k
python傳送訊息給微信好友
咱們就直接上程式碼啦! import itchat import requests import re def login_sendmsg(text): itchat.login() # 只是普通的登陸,並不具有快取的功能 itchat.auto_login(hotReload=T
iOS APP調取簡訊 傳送訊息給其他人
if( [MFMessageComposeViewController canSendText]) { MFMessageComposeViewController * controller = [[MFMessageComposeViewCont
微信公眾號傳送訊息給使用者 php
1.微信公眾號 這裡得話 一開始先去看了 微信公眾號的介面 發現網頁授權需要時認證的服務號,一開始想的是那去申請一個認證的服務號豈不是很費事,然後網上搜了搜,發現了還有微信公眾號個人測試號這個東西,所有的介面都可以使用(據說是這樣),然後就開始去學習使用微信公眾號個人測試號的使用; 個人測試號網址: http
微信公眾號傳送模板訊息給使用者
步驟 1.新增模板訊息功能 2.從模板庫中選擇自己合適的模板 3. 公共方法funtion.php中(thinkphp3.2框架) //模板公共方法 function rz_msg($openid,$temid,$first,$keyword1,$keywor
rabbitmq 傳送訊息格式注意
在rabbitmq的網頁版中,有publish ,用了傳送。 delivery_mode: 2 headers: content_type:
rabbitmq和redis用作訊息佇列的區別
將redis釋出訂閱模式用做訊息佇列和rabbitmq的區別: 可靠性 redis :沒有相應的機制保證訊息的可靠消費,如果釋出者釋出一條訊息,而沒有對應的訂閱者的話,這條訊息將丟失,不會存在記憶體中;rabbitmq:具有訊息消費確認機制,如果釋出一條訊息,還沒有消費者消費該佇
Java模擬壓測裝置傳送訊息到伺服器(Rabbitmq) python模擬上報訊息到rabbitMQ(protobuf)
進入idea,新建一個maven專案 主要是模擬150個裝置同時併發,併發時間持續15min 1.建立客戶端,構造請求傳送到對應的rabbitmq的佇列,用的protobuf協議。 import com.google.protobuf.ByteString; import com.
Kafka、RabbitMQ、RocketMQ等訊息中介軟體的對比 —— 訊息傳送效能和區別
分散式系統中,我們廣泛運用訊息中介軟體進行系統間的資料交換,便於非同步解耦。現在開源的訊息中介軟體有很多,前段時間我們自家的產品 RocketMQ (MetaQ的核心) 也順利開源,得到大家的關注。 那麼,訊息中介軟體效能究竟哪家強? 帶著這個疑問,我們中介軟體測
RabbitMQ 的六種訊息佇列
1.簡單模式 1.1建立連線: 1.2傳送訊息建立佇列過程: 1.3消費者 2.Work模式 一個生產者,多個消費者,每個消費者獲取到的訊息唯一。 2.1 生產者 2.2 消費者1 2.3 消費者2 3. 訂閱模式 一個生
嵌入式Linux併發程式設計,程序間通訊方式,System V IPC,訊息佇列,開啟/建立msgget(), 傳送訊息msgsnd(),格式,接收訊息msgrcv(),控制訊息佇列 msgctl()
文章目錄 1,訊息佇列 2,訊息佇列結構 3,訊息佇列使用步驟 3.1,開啟/建立訊息佇列 msgget() 3.1.1,開啟/建立訊息佇列---示例msgget() 3.2,向訊息佇列傳送訊息 msgs
RabbitMQ的學習(三):RabbitMQ不同的交換機配合路由鍵傳送訊息
前言:前面兩章我們已經開始了從安裝到編寫簡單的demo的過程: RabbitMQ的學習(一):Windows下安裝及配置RabbitMQ,erlang環境變數 RabbitMQ的學習(二):簡單的java demo實現RabbitMQ的傳送與接收 學習本章,需要了
Java--對接微信第二篇之訂閱傳送圖文訊息給使用者
在第二篇的基礎上,把訂閱響應事件下的,傳送文字訊息介面替換成傳送圖文訊息的介面。 // 建立圖文訊息 NewsMessage newsMessage = new NewsMessage();
微信裡面的簽到加積分介面(已經測試過沒問題)服務號不能每天傳送訊息,為了避免這個,每天簽到的時候,推送一條最新的訊息給客戶。
public string QianDao(string WeiXinId, string key)//引數是微訊號 { strs = WeiXinId.Trim() + "WJXFGCLN+Mihaha";
電商之梳理rabbitmq相關知識---通訊--訊息佇列
rabbitmq 編輯 MQ全稱為Message Queue, 訊息佇列(MQ)是一種應用程式對應用程式的通訊方法。應用程式通過讀寫出入佇列的訊息(針對應用程式的資料)來通訊,而無需專用連線來連結它們。訊息傳遞指的是程式之間通過在訊息中傳送資料進行通訊,而不是