protected void BindQueue(IModel channel, IAmqpEndpointConfiguration endpointConfiguration) { Action<IModel, IAmqpEndpointConfiguration, string> setup = (x, y, z) => x.QueueBind( y.QueueName, y.ExchangeName, z, y.NoWait, y.Arguments); if(endpointConfiguration.RoutingKeys.Count == 0) { setup(channel, endpointConfiguration, ""); } else { endpointConfiguration.RoutingKeys.ForEach(x => setup(channel, endpointConfiguration, x)); } }
public static IEndPoint CreateFromAmqpEndpoint(IAmqpEndpointConfiguration endpoint) { return new BusEndPoint() {_configuration = endpoint}; }
public BusEndPoint() { _configuration = new AmqpEndpointConfiguration(); }
protected void BuildExchange(IModel channel, IAmqpEndpointConfiguration endpointConfiguration) { channel.ExchangeDeclare( endpointConfiguration.ExchangeName, endpointConfiguration.ExchangeTypeName, endpointConfiguration.Passive, endpointConfiguration.Durable, endpointConfiguration.AutoDelete, endpointConfiguration.Internal, endpointConfiguration.NoWait, endpointConfiguration.Arguments); }
protected void ForceBindQueue(IModel channel, IAmqpEndpointConfiguration endpointConfiguration) { try { BindQueue(channel, endpointConfiguration); } catch (RabbitMQ.Client.Exceptions.OperationInterruptedException e) { channel = GetModel(); channel.ExchangeDelete(endpointConfiguration.ExchangeName, false, true); channel = GetModel(); BuildExchange(channel, endpointConfiguration); BuildQueue(channel, endpointConfiguration); BindQueue(channel, endpointConfiguration); } }
protected void BuildQueue(IModel channel, IAmqpEndpointConfiguration endpointConfiguration) { channel.QueueDeclare( endpointConfiguration.QueueName, endpointConfiguration.Passive, endpointConfiguration.Durable, endpointConfiguration.Exclusive, endpointConfiguration.AutoDelete, endpointConfiguration.NoWait, endpointConfiguration.Arguments); }