j'ai rencontré problème lors de l'utilisation ReceiveNoWait avec Apache.NMS & ActiveMQ, des scénarios très simples:ReceiveNoWait ne fonctionne pas avec Apache.NMS & ActiveMQ
private static void Send(string text)
{
var factory = new ConnectionFactory("tcp://localhost:61616/");
using (var connection = factory.CreateConnection())
{
connection.Start();
var session = connection.CreateSession();
var queue = session.GetQueue("test");
var producer = session.CreateProducer(queue);
producer.Send(producer.CreateTextMessage(text));
}
}
private static string Receive()
{
var factory = new ConnectionFactory("tcp://localhost:61616/");
using (var connection = factory.CreateConnection())
{
connection.Start();
var session = connection.CreateSession();
var queue = session.GetQueue("test");
var consumer = session.CreateConsumer(queue);
var message = (ITextMessage)consumer.ReceiveNoWait();
return message == null ? null : message.Text;
}
}
static void Main(string[] args)
{
for (var i = 0; i < 100; i++)
{
Send(i.ToString());
}
while (true)
{
Console.WriteLine(Receive() ?? "(null)");
}
}
Explication: J'ai envoyé 100 messages texte à la file d'attente et je vais recevoir & imprimer les messages un par un avec une boucle while. Mais le code ci-dessus toujours imprimer (null)
- Je peux trouver les messages dans la file d'attente de la console d'administration.
Qu'est-ce qui ne va pas?
Avez-vous trouvé une réponse à cette question? J'ai le même problème. –