RabbitMQ Verbraucher als windows-Dienst

Ich habe einen rabbitmq-consumer-Anwendung implementieren "publish/subscribe-pattern .net, das läuft perfekt, wie eine Konsole-Anwendung, aber wenn ich bereitstellen, die als windows-Dienst scheint es nicht zu sein, die Speicherung der Daten in mongodb.

    protected override void OnStart(string[] args)
    {
        try
        {
             var connectionString = "mongodb://localhost";
            var client = new MongoClient(connectionString);
            var factory = new ConnectionFactory() { HostName = "localhost" };            
            using (var connection = factory.CreateConnection())
            {
                using (var channel = connection.CreateModel())
                {
                    channel.ExchangeDeclare(exchange: "test", type: "fanout");
                    var queueName = channel.QueueDeclare().QueueName;
                    channel.QueueBind(queue: queueName,                                       exchange: "logs", routingKey: "");

                    var consumer = new EventingBasicConsumer(channel);
                    consumer.Received += (model, ea) =>
                    {
                        var body = ea.Body;
                        var message = Encoding.UTF8.GetString(body);
                        BsonDocument document = BsonDocument.Parse(message);
                        var database = client.GetDatabase("test");
                        var collection = database.GetCollection<BsonDocument>("test_collection");
                        collection.InsertOneAsync(document);
                    };
                    channel.BasicConsume(queue: queueName,                                       noAck: true,consumer: consumer);

                }
            }
        }
        catch (Exception ex)
        {
            throw;
        }
    }

Gibt es etwas, was ich bin fehlt?

  • Haben Sie die Protokolle?
  • Sie werden nicht warten, für das Ergebnis der InsertOneAsync... was könnte passiert sein und du wirst nie wissen... mit Auflistung.InsertOneAsync(Dokument).GetAwaiter().GetResult();
  • Ich habe versucht, die Protokollierung zu sehen, ob die Nachricht tatsächlich empfangen wird. Ist aber nicht so Aussehen mag.
  • Es schadet auch nicht, alle Meldungen dump in mongoDB zu beginnen. Auch, um zu überprüfen, überprüfte ich die logs von mongoDB. Es gibt keine Daten, die gedumpt ist, um von diesem service
InformationsquelleAutor sandy | 2015-11-13
Schreibe einen Kommentar