Потребитель Rabbit MQ как сервис в Ubuntu Linux

У меня есть простое приложение подписчика Rabbit MQ, написанное на.net core 2.0, как указано в следующем коде.

 static void Main(string[] args)
        {
            var factory = new ConnectionFactory() { HostName = "localhost" };
            using (var connection = factory.CreateConnection())
            using (var channel = connection.CreateModel())
            {
                channel.QueueDeclare(queue: "rpc_queue",
                    durable: false,
                    exclusive: false,
                    autoDelete: false,
                    arguments: null);

                var consumer = new EventingBasicConsumer(channel);
                consumer.Received += (model, ea) =>
                {
                    // my custom logic goes here
                };
                channel.BasicConsume(queue: "rpc_queue",
                    autoAck: true,
                    consumer: consumer);

                Console.WriteLine(" Press [enter] to exit.");
                Console.ReadLine();
            }

Мне нужно преобразовать это в службу демона Linux и создать следующий файл службы systemD.

[Unit]
Description=Demo service
After=network.target

[Service]
ExecStart=/usr/bin/dotnet /srv/sample/rabbit_sub.dll
Restart=on-failure

[Install]
WantedBy=multi-user.target

Приложение работает нормально, когда я выполняю его самостоятельно. т.е.

dotnet rabbit_sub.dll

Но когда служба запускается, она запускается один раз и выполняется следующим образом.

rabbit.service -  Demo service
   Loaded: loaded (/etc/systemd/system/rabbit.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Wed 2017-12-13 11:29:40 +0530; 7s ago

таким образом, текущее состояние мертвое, и оно больше не слушает очередь. Я думаю проблема в том Console.Readline(); неприменимо, когда оно работает как служба и код не будет там храниться. Мне нужно это сервисное приложение для прослушивания очереди кроликов и вызова consumer.Received += (model, ea) событие, когда в очереди появляется новое сообщение.

Было бы здорово, если бы кто-нибудь мог помочь мне преобразовать это в службу демона Linux.

0 ответов

Другие вопросы по тегам