EdgeX默认使用Redis PubSub作为其消息传递总线()。
我已经在本地启动了Redis服务器。
我已经运行了Core数据和/或设备服务,我认为默认配置为使用Redis Pub/Sub。
我有一个虚拟设备服务,它将数据发布到edgex/events/#主题()。
最后,我已经将我的应用程序服务配置为订阅主题edgex/events/#,如示例所示。
[Trigger.EdgexMessageBus]
Type = "redis" # message bus type (i.e "redis`, `mqtt` or
我查看了这些文档:
它指出:
当您订阅一个频道时,您将得到一条消息,该消息表示为包含三个元素的多批量回复。消息的第一个元素是消息的类型(例如订阅或取消订阅)。消息的第二个元素是要订阅或取消订阅的给定通道的名称。消息的第三个元素是当前订阅的通道数:
> SUBSCRIBE first second
*3 #three elements in this message: “subscribe”, “first”, and 1
$9 #number of bytes in the element
subscribe #kind of message
$5
我有一台Node.js服务器--我想让进程侦听来自自身的消息--这只是为了测试。我遇到的问题是,当向同一个进程发布消息时,订阅者似乎根本没有接收到它。
我有这样的设置:
var redis = require('redis');
var rcPub = redis.createClient();
var rcSub = redis.createClient();
var message = String('testing123');
rcSub.subscribe('redis_channel@test_overall_health');
我是否可以使用glob样式的模式将消息发布到同一个命令中的多个通道,例如Connection.GetSubscriber().Publish("room/*", "my message"),并且消息被发布到所有匹配该模式的通道上?
也许,如果我误解了Redis中的基本pub/sub模式,上述问题可能没有什么意义。我的理解是,每个Subscribe命令都在Redis服务器上建立一个通道,因此该服务器知道通道it,因此当服务器收到一个发布命令时,它应该有能力将已发布的消息“扇出”所有与glob样式模式匹配的通道。如果我错了,请改正。
另外一个问题,我想我也可以订阅多
我已经编写了一个程序,用于从html文件读取数据到使用websocket的ruby程序。我包括以下代码:
EventMachine::WebSocket.run(:host => "0.0.0.0", :port => 8080) do |ws|
ws.onopen { |handshake|
puts "WebSocket connection open #{ws}"
# Access properties on the EM::WebSocket::Handshake object, e.g.
# p