static private Task ConsumerAsync() { var configManager = CreateConfigurationManager(); var receiverFactory = new AMQReceiverFactory(new AMQConnectionFactory()); var connectionSettings = configManager.GetConnectionSettings("defaultConnection"); var queueSettings = configManager.GetDestinationSettings("MY_AMQ_TEST"); using (var receiver = receiverFactory.CreateText(connectionSettings, queueSettings)) { while (true) { try { try { var message = receiver.Receive(1000); if (message != null) { Console.WriteLine(message.Data); message.Acknowledge(); } } catch (TimeoutException) { } catch (MessageException ex) { switch (ex.ExceptionCode) { case MessageExceptionCode.ExclusiveLock: //await Task.Delay(5000); break; case MessageExceptionCode.LostConnection: // await Task.Delay(5000); break; default: throw; } } catch (SqlException ex) { if (SQLErrors.IsSevereErrorCode(ex.Number)) { // issue connecting with SQL server //await Task.Delay(5000); } throw; } } catch (Exception ex) { receiver.ClearCacheBuffer(); Console.WriteLine(ex); } } } }
static private Task ConsumerAsync() { var args = new Dictionary <string, object> { { "x-dead-letter-exchange", "" }, { "x-dead-letter-routing-key", "My.DLQ" } }; var consumerFactory = new RMQConsumerFactory(new RMQConnectionFactory()); var connectionSettings = GetRMQConnectionSettings(); var queueSettings = new RMQQueueSettings("My.Queue", "My.Queue", true, false, false, true, arguments: args); using (var consumer = consumerFactory.CreateText(connectionSettings, queueSettings)) { consumer.Mode = ConsumerMode.OnNoMessage_ReturnNull; while (true) { try { try { var message = consumer.Receive(1000); if (message != null) { //message.Reject(true); //message.Reject(); message.Acknowledge(); } } catch (TimeoutException) { } catch (MessageException ex) { switch (ex.ExceptionCode) { case MessageExceptionCode.ExclusiveLock: //await Task.Delay(5000); break; case MessageExceptionCode.LostConnection: //await Task.Delay(5000); throw; default: throw; } } catch (SqlException ex) { if (SQLErrors.IsSevereErrorCode(ex.Number)) { // issue connecting with SQL server //await Task.Delay(5000); } throw; } } catch (Exception ex) { consumer.ClearCacheBuffer(); Console.WriteLine(ex); } } } }