Example #1
0
        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);
        }
Example #2
0
        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);
		}
Example #4
0
        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();
        }
Example #6
0
        public T BinaryDeserialize(Stream stream)
        {
            ISerializationStrategy <T> strategy = new BinarySerializationStrategy <T>();

            return(strategy.Deserialize(stream));
        }
Example #7
0
        public Stream BinarySerializer(T t, Stream s)
        {
            ISerializationStrategy <T> strategy = new BinarySerializationStrategy <T>();

            return(strategy.Serialize(s, t));
        }
Example #8
0
        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();
        }