public TMessage GetMessage <TMessage>(ISerializationStrategy serializationStrategy, bool retry) where TMessage : class { TMessage message = default(TMessage); if (!retry) { Console.WriteLine("Getting message ..."); BasicGetResult args = _channel.BasicGet(_queueName, true); if (args != null) { message = new BinarySerializationStrategy().Deserialize <TMessage>(args.Body); } return(message); } new Action(() => { try { var consumer = new QueueingBasicConsumer(_channel); Console.WriteLine("Consuming messages ..."); _channel.BasicConsume(_queueName, true, "", null, consumer); var args = (BasicDeliverEventArgs)consumer.Queue.Dequeue(); message = serializationStrategy.Deserialize <TMessage>(args.Body); } catch (EndOfStreamException) { } }).Background().BlockUntil(() => message != null)(); return(message); }
public void Publish <TMessage>(TMessage message, IDictionary headers) { var properties = new BasicProperties(); properties.Headers = headers; properties.Timestamp = new AmqpTimestamp((long)(DateTime.Now - _unixEpoch).TotalSeconds); var serializationStrategy = new BinarySerializationStrategy(); byte[] msg = serializationStrategy.Serialize(message); _channel.BasicPublish(_exchangeName, string.Empty, properties, msg); }
public ConfigurationModel() { PublicationRouteConfiguration = new RouteConfiguration<IPublishInfo>(); PublicationRouteConfiguration.AddStrategy<MappingRouteInfoLookupStrategy<IPublishInfo>>(); PublicationRouteConfiguration.AddStrategy<DefaultPublicationRouteInfoLookupStrategy>(); ConsumeRouteConfiguration = new RouteConfiguration<IConsumeInfo>(); ConsumeRouteConfiguration.AddStrategy<MappingRouteInfoLookupStrategy<IConsumeInfo>>(); ConsumeRouteConfiguration.AddStrategy<DefaultSubscriptionRouteInfoLookupStrategy>(); DefaultSerializationStrategy = new BinarySerializationStrategy(); DefaultDeadLetterStrategy = new NullDeadLetterStrategy(); AutoSubscriptions = new List<AutoSubscription>(); ConnectionDownQueueStrategy = new ThrowingQueueStrategy<ConnectionUnavailableException>(); ReconnectionInterval = TimeSpan.FromSeconds(10); }
public ConfigurationModel() { PublishRouteConfiguration = new RouteConfiguration <IPublishInfo>(); PublishRouteConfiguration.AddStrategy <MappingRouteInfoLookupStrategy <IPublishInfo> >(); PublishRouteConfiguration.AddStrategy <DefaultPublishRouteInfoLookupStrategy>(); ConsumeRouteConfiguration = new RouteConfiguration <IConsumeInfo>(); ConsumeRouteConfiguration.AddStrategy <MappingRouteInfoLookupStrategy <IConsumeInfo> >(); ConsumeRouteConfiguration.AddStrategy <DefaultConsumeRouteInfoLookupStrategy>(); DefaultSerializationStrategy = new BinarySerializationStrategy(); AutoSubscriptions = new List <AutoSubscription>(); ConnectionDownQueueStrategy = new ThrowingQueueStrategy <ConnectionUnavailableException>(); ReconnectionInterval = TimeSpan.FromSeconds(10); ReconnectionTimeout = TimeSpan.FromMinutes(60); }
static void TestRabbitMq(int messageCount) { IConnection connection = new ConnectionFactory().CreateConnection(); var serializer = new BinarySerializationStrategy(); for (int i = 0; i < messageCount; i++) { IModel model = connection.CreateModel(); model.ExchangeDeclare("rabbitMQ.test.exchange", ExchangeType.Direct, false, true, null); byte[] serializedMessage = serializer.Serialize(new TestMessage("test")); model.BasicPublish("rabbitMQ.test.exchange", string.Empty, null, serializedMessage); model.Close(); } connection.Close(); }
public T BinaryDeserialize(Stream stream) { ISerializationStrategy <T> strategy = new BinarySerializationStrategy <T>(); return(strategy.Deserialize(stream)); }
public Stream BinarySerializer(T t, Stream s) { ISerializationStrategy <T> strategy = new BinarySerializationStrategy <T>(); return(strategy.Serialize(s, t)); }