工程师消息代理用法 - housekeeper-software/coocare GitHub Wiki
目的
使用Rabbitmq作为消息队列,实现应用之间的解耦。
后端需要提供两个web接口
webQueryUserUrl: http://hp-php.coocare.com/ws/interface/queryUser?group=1/2
webLoginUrl:https://hp-php.coocare.com/ws/interface/loginForJava?communicationId
第一个接口返回
{
"users":[
{
"userId":"e0001",
"channelId":"huiguanjia_dl"
},
{
"userId":"e0002",
"channelId":"huiguanjia_dl"
}
]
}
第二个接口使用现有的即可。
{
"token":"xx",
"communication_server":"内网ip",
"channel_id":""
}
java 端
可以向 web_to_user_1,web_to_user_2,web_to_user_3三个任意个队列发消息,
需要在 user_to_web_1,user_to_web_2,user_to_web_3三个队列接收用户消息
其中有个 eproxy_system_event需要一个单独的任务接收消息,这里实时报告工程师代理服务器的状态,
这里包含工程师在线,掉线,成功,失败,以及producer,consumer的各种事件。这些消息设置1个小时过期。
rabbitmq的交换机/队列的配置:
"producer":{
"connection":{
"host":"192.168.180.70:5672",
"connectionTimeout":500,
"username":"root",
"password":"ssc82893388",
"virtualHost":"/",
"heartbeat":60,
"channelMax":0,
"frameMax":131072,
"saslMethod":0
},
"exchange":{
"name":"huiguanjia_dl",
"type":"direct",
"pasive":false,
"durable":true,
"auto_delete":false,
"internal":false
},
"queue":[
{
"name":"user_to_web_1",
"passive":false,
"durable":true,
"auto_delete":false,
"exclusive":false,
"delivery_mode":2,
"confirm":false,
"mandatory":false,
"immediate":false,
"arguments":{
"x-message-ttl":0
}
},
{
"name":"user_to_web_2",
"passive":false,
"durable":true,
"auto_delete":false,
"exclusive":false,
"delivery_mode":2,
"confirm":false,
"mandatory":false,
"immediate":false,
"arguments":{
"x-message-ttl":0
}
},
{
"name":"user_to_web_3",
"passive":false,
"durable":true,
"auto_delete":false,
"exclusive":false,
"delivery_mode":2,
"confirm":false,
"mandatory":false,
"immediate":false,
"arguments":{
"x-message-ttl":0
}
},
{
"name":"eproxy_system_event",
"report":true,
"passive":false,
"durable":true,
"auto_delete":false,
"exclusive":false,
"delivery_mode":2,
"confirm":false,
"mandatory":false,
"immediate":false,
"arguments":{
"x-message-ttl":3600000
}
}
]
},
"consumer":{
"connection":{
"host":"192.168.180.70:5672",
"connectionTimeout":500,
"username":"root",
"password":"ssc82893388",
"virtualHost":"/",
"heartbeat":60,
"channelMax":0,
"frameMax":131072,
"saslMethod":0
},
"exchange":{
"name":"communication",
"type":"direct",
"pasive":false,
"durable":true,
"auto_delete":false,
"internal":false
},
"queue":[
{
"name":"web_to_user_1",
"passive":true,
"durable":true,
"auto_delete":false,
"exclusive":false,
"tag":"server1",
"no_local":false,
"no_ack":true,
"qos":10,
"basic_get":false
},
{
"name":"web_to_user_2",
"passive":true,
"durable":true,
"auto_delete":false,
"exclusive":false,
"tag":"server2",
"no_local":false,
"no_ack":true,
"qos":10,
"basic_get":false
},
{
"name":"web_to_user_3",
"passive":true,
"durable":true,
"auto_delete":false,
"exclusive":false,
"tag":"server2",
"no_local":false,
"no_ack":true,
"qos":10,
"basic_get":false
}
]
}