Каков наилучший способ создать соединение при запуске в asp. net core webapi? - PullRequest
0 голосов
/ 25 марта 2020

Я хочу создать SmppClient, используя JamaaTech Smpp Library. С клиентом, которого я создам, я хочу слушать входящие смс и отправлять тело смс в очередь rabbitmq. Моя проблема: Как я могу создать только один экземпляр smppclient при запуске моего приложения и внедрить его в другой сервис для манипуляции.

Вот как я создаю свой smppclient с помощью jamaatech ,

private SmppClient CreateSmppClient(ISmppConfiguration config)
    {
        var client = new SmppClient
        {
            Name = config.Name
        };
        //client.SmppEncodingService = new SmppEncodingService(System.Text.Encoding.UTF8);

        client.ConnectionStateChanged += Client_ConnectionStateChanged;
        client.StateChanged += Client_StateChanged;
        client.MessageSent += Client_MessageSent;
        client.MessageDelivered += Client_MessageDelivered;
        client.MessageReceived += Client_MessageReceived;

        var properties = client.Properties;
        properties.SystemID = config.SystemId;// "mysystemid";
        properties.Password = config.Password;// "mypassword";
        properties.Port = config.Port;// 2034; //IP port to use
        properties.Host = config.Host;// "196.23.3.12"; //SMSC host name or IP Address
        properties.SystemType = config.SystemType;// "mysystemtype";
        properties.DefaultServiceType = config.DefaultServiceType;// "mydefaultservicetype";
        properties.DefaultEncoding = config.Encoding;

        //Resume a lost connection after 30 seconds
        client.AutoReconnectDelay = config.AutoReconnectDelay;

        //Send Enquirer Link PDU every 15 seconds
        client.KeepAliveInterval = config.KeepAliveInterval;

        return client;
    }

1 Ответ

1 голос
/ 25 марта 2020

1- Создайте свой собственный интерфейс ISmppClient и класс SmppClient

2- в файле startup.cs. Настройте зависимости

services.AddSingleton<IMySmppClient , MySmppClient >();

3 - добавьте IMySmppClient в Contructor в классы, где вам это необходимо

...