क्या आपके पास कोई संकेत है कि सदस्यता समस्या कब हुई है, तो मैं फिर से कनेक्ट कर सकता हूं?RabbitMQ C# ड्राइवर संदेश प्राप्त करना बंद कर देता है
मेरी सेवा RabbitMQ.Client.MessagePatterns का उपयोग करती है। इसकी सदस्यता के लिए सदस्यता। कुछ समय बाद, मेरा ग्राहक चुपचाप संदेशों को प्राप्त करना बंद कर देता है। मुझे नेटवर्क के मुद्दों पर संदेह है क्योंकि मेरा वीपीएन कनेक्शन सबसे विश्वसनीय नहीं है।
मैंने थोड़ी देर के लिए दस्तावेज़ों को पढ़ा है, यह पता लगाने के लिए कि जब यह नेटवर्क बिना किसी किस्मत के नेटवर्क समस्या के कारण टूटा जा सकता है। मैंने यह जांचने की कोशिश की है कि कनेक्शन और चैनल अभी भी खुले हैं, लेकिन यह हमेशा रिपोर्ट करता है कि यह अभी भी खुला है।
संदेश जो संदेश करता है वह काफी अच्छी तरह से काम करता है और कतार में वापस स्वीकार किया जाता है, इसलिए मुझे नहीं लगता कि यह "एएके" के साथ एक मुद्दा है।
मुझे यकीन है कि मुझे बस कुछ आसान याद आना चाहिए, लेकिन मुझे अभी तक यह नहीं मिला है।
public void Run(string brokerUri, Action<byte[]> handler)
{
log.Debug("Connecting to broker: {0}".Fill(brokerUri));
ConnectionFactory factory = new ConnectionFactory { Uri = brokerUri };
using (IConnection connection = factory.CreateConnection())
{
using (IModel channel = connection.CreateModel())
{
channel.QueueDeclare(queueName, true, false, false, null);
using (Subscription subscription = new Subscription(channel, queueName, false))
{
while (!Cancelled)
{
BasicDeliverEventArgs args;
if (!channel.IsOpen)
{
log.Error("The channel is no longer open, but we are still trying to process messages.");
throw new InvalidOperationException("Channel is closed.");
}
else if (!connection.IsOpen)
{
log.Error("The connection is no longer open, but we are still trying to process message.");
throw new InvalidOperationException("Connection is closed.");
}
bool gotMessage = subscription.Next(250, out args);
if (gotMessage)
{
log.Debug("Received message");
try
{
handler(args.Body);
}
catch (Exception e)
{
log.Debug("Exception caught while processing message. Will be bubbled up.", e);
throw;
}
log.Debug("Acknowledging message completion");
subscription.Ack(args);
}
}
}
}
}
}
अद्यतन:
मैं एक आभासी मशीन में सर्वर चल रहा है और मैं एक अपवाद (RabbitMQ.Client.Exceptions.OperationInterruptedException: AMQP आपरेशन बाधित किया गया था) मिलता है द्वारा एक नेटवर्क विफलता नकली जब मैं लंबे समय तक कनेक्शन तोड़ता हूं तो शायद यह नेटवर्क समस्या नहीं है। अब मुझे नहीं पता कि यह क्या होगा लेकिन यह केवल कुछ घंटों के चलने में विफल रहता है।
वाह। यह बहुत अच्छा लग रहा है। मैंने आज सुबह मेरी सेवा में कोड किया है और इसे तैनात किया है। आपने मुझे बहुत समय बचा लिया है। –