天天看點

ruby使用RabbitMQ——亂碼問題

首先貼一下ruby使用RabbitMQ 的方法。

1.下個docker

2.拉取鏡像,運作$docker pull rabbitmq:management

3.啟動容器$docker run -d --name rabbitmq --publish 5671:5671 \

--publish 5672:5672 --publish 4369:4369 --publish 25672:25672 --publish 15671:15671 --publish 15672:15672 \ rabbitmq:management

4.     

conn = Bunny.new(:host => "IP位址", :port => "5672", :user => "guest", :password => "guest") #預設的使用者名和密碼,具體看你設定了
conn.start
#建立連接配接通道
ch = conn.create_channel
q = ch.queue("myQueue") #myQueue是我設定的隊列名稱
#向指定Topic發送消息
ch.default_exchange.publish(content, :routing_key => q.name, :payload_encoding => "string")#content是你要向隊列發送的消息
conn.close
           

我現在在用rabbitMQ作為中間傳遞消息的,發送消息的是ruby on rails架構(ruby語言)寫的,而接收端是springboot架構(java語言)寫的,這兩個之間如果傳遞消息必須規定編碼方式等,否則就會出現亂碼情況,字元和英文顯示ascii碼,而中文則會顯示負數的ascii碼(如果消費方和服務方都采用Springboot的模闆就不會出現這樣的問題)。解決辦法如下:

發送消息那一行改為

ch.default_exchange.publish(content, :routing_key => q.name, :payload_encoding => "string",:content_encoding=>"UTF-8",:content_type=> "text/plain")#表示内容類型為文本,編碼格式為UTF-8