Я использую ZeroMQ для облегчения среды публикации/подписки, которая мне нужна. И pub, и sub работают на локальном хосте.
Я реализовал pub на C#:
var options = new Options();
var parser = new CommandLineParser(new CommandLineParserSettings(Console.Error));
if (!parser.ParseArguments(args, options))
Environment.Exit(1);
using (var ctx = ZmqContext.Create())
{
using (var socket = ctx.CreateSocket(SocketType.PUB))
{
foreach (var endPoint in options.bindEndPoints)
socket.Bind(endPoint);
long msgCptr = 0;
int msgIndex = 0;
while (true)
{
if (msgCptr == long.MaxValue)
msgCptr = 0;
msgCptr++;
if (options.maxMessage >= 0)
if (msgCptr > options.maxMessage)
break;
if (msgIndex == options.altMessages.Count())
msgIndex = 0;
var msg = options.altMessages[msgIndex++].Replace("#nb#", msgCptr.ToString("d2"));
Thread.Sleep(options.delay);
Console.WriteLine("Publishing: " + msg);
socket.Send(msg, Encoding.UTF8);
}
}
}
подпрограмма реализована на python:
def main():
test_connect = "tcp://127.0.0.1:5000"
test_topic = ""
connect_to = test_connect
topics = test_topic
ctx = zmq.Context()
s = ctx.socket(zmq.SUB)
s.setsockopt(zmq.SUBSCRIBE, "")
s.connect(connect_to)
print "Receiving messages on All Topics ..."
while True:
print "try to receive"
objA = s.recv()
print objA
Сначала я запустил саб, а потом паб. Но сабвуфер не может получать сообщения от паба. Я не знаю почему.
Я тестировал pub в python, а sub в php и pub/sub в python. Оба они работали хорошо. Но когда оказалось, что pub или sub реализован на C#, возникли проблемы.
Как я могу решить эту проблему?