SSL-рукопожатие не может подключить приложение Quarkus к AMQ онлайн с использованием протокола AMQPS - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь подключить свое приложение на основе кваркуса к экземпляру Red Hat AMQ Online, развернутому в Red Hat Openshift 4.4 и доступному через маршрут AMQP. Если я разверну приложение в OCP и использую незащищенную службу, все будет работать как шарм, и я смогу подключиться к службе, используя протоколы AMQP и TCP.

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

Я создал сертификаты брокера / клиента в соответствии с официальным руководством AMQ и связал clientTrustStore и clientKeyStore с клиентским приложением.

Для полноты, исходный код можно найти здесь .

Клиент JMS основан на реализации QPid (вырезано из pom. xml):

<dependency>
    <groupId>org.amqphub.quarkus</groupId>
    <artifactId>quarkus-qpid-jms</artifactId>
</dependency>

Вот фрагмент кода с использованием объектов JMS (MessagingServiceImpl. java):

@Inject
ConnectionFactory connectionFactory;

@PostConstruct
void postConstruct() {
    context = connectionFactory.createContext(Session.AUTO_ACKNOWLEDGE);
    producer = context.createProducer();
    productionQueue = context.createQueue(productionQueueName);
    coolingQueue = context.createQueue(coolingQueueName);

    productionReplyQueue = context.createTemporaryQueue();
    coolingReplyQueue = context.createTemporaryQueue();

    productionConsumer = context.createConsumer(productionReplyQueue);
    productionConsumer.setMessageListener(productionMessageListener);
    coolingConsumer = context.createConsumer(coolingReplyQueue);
    coolingConsumer.setMessageListener(coolingMessageListener);
}

И информация о подключении настроена следующим образом (application. xml):

quarkus.qpid-jms.url=amqps\://broker-amqp-iot-mw-dev.apps.shift.rhepds.com\:443?transport.trustAll\=true&transport.keyStoreLocation\=/<<path to keystore file>>/client.ks&transport.keyStorePassword\=password&transport.trustStoreLocation\=<<path to truststore file>>/client.ts&transport.trustStorePassword\=password&transport.keyAlias\=client
quarkus.qpid-jms.username=quarkus
quarkus.qpid-jms.password=quarkus

Я получаю исключение от Netty: java .nio.channels.ClosedChannelException

Код бизнес-логи c протестирован, и я почти уверен, что ключи / доверительные хранилища идут od и работает, но я не могу копать глубже этого.

вот это значимый фрагмент журнала:

2020-05-28 12:53:19,925 INFO  [com.red.eme.iot.dev.ser.cor.DeviceServiceImpl] (Quarkus Main Thread) The application is starting...{}
2020-05-28 12:53:19,942 DEBUG [io.net.buf.PooledByteBufAllocator] (vert.x-eventloop-thread-3) -Dio.netty.allocator.numHeapArenas: 16
2020-05-28 12:53:19,942 DEBUG [io.net.buf.PooledByteBufAllocator] (vert.x-eventloop-thread-3) -Dio.netty.allocator.numDirectArenas: 16
2020-05-28 12:53:19,942 DEBUG [io.net.buf.PooledByteBufAllocator] (vert.x-eventloop-thread-3) -Dio.netty.allocator.pageSize: 8192
2020-05-28 12:53:19,942 DEBUG [io.net.buf.PooledByteBufAllocator] (vert.x-eventloop-thread-3) -Dio.netty.allocator.maxOrder: 1
2020-05-28 12:53:19,942 DEBUG [io.net.buf.PooledByteBufAllocator] (vert.x-eventloop-thread-3) -Dio.netty.allocator.chunkSize: 16384
2020-05-28 12:53:19,942 DEBUG [io.net.buf.PooledByteBufAllocator] (vert.x-eventloop-thread-3) -Dio.netty.allocator.tinyCacheSize: 512
2020-05-28 12:53:19,942 DEBUG [io.net.buf.PooledByteBufAllocator] (vert.x-eventloop-thread-3) -Dio.netty.allocator.smallCacheSize: 256
2020-05-28 12:53:19,942 DEBUG [io.net.buf.PooledByteBufAllocator] (vert.x-eventloop-thread-3) -Dio.netty.allocator.normalCacheSize: 64
2020-05-28 12:53:19,942 DEBUG [io.net.buf.PooledByteBufAllocator] (vert.x-eventloop-thread-3) -Dio.netty.allocator.maxCachedBufferCapacity: 32768
2020-05-28 12:53:19,942 DEBUG [io.net.buf.PooledByteBufAllocator] (vert.x-eventloop-thread-3) -Dio.netty.allocator.cacheTrimInterval: 8192
2020-05-28 12:53:19,942 DEBUG [io.net.buf.PooledByteBufAllocator] (vert.x-eventloop-thread-3) -Dio.netty.allocator.cacheTrimIntervalMillis: 0
2020-05-28 12:53:19,943 DEBUG [io.net.buf.PooledByteBufAllocator] (vert.x-eventloop-thread-3) -Dio.netty.allocator.useCacheForAllThreads: true
2020-05-28 12:53:19,943 DEBUG [io.net.buf.PooledByteBufAllocator] (vert.x-eventloop-thread-3) -Dio.netty.allocator.maxCachedByteBuffersPerChunk: 1023
2020-05-28 12:53:19,963 DEBUG [io.net.buf.ByteBufUtil] (vert.x-eventloop-thread-3) -Dio.netty.allocator.type: pooled
2020-05-28 12:53:19,963 DEBUG [io.net.buf.ByteBufUtil] (vert.x-eventloop-thread-3) -Dio.netty.threadLocalDirectBufferSize: 0
2020-05-28 12:53:19,963 DEBUG [io.net.buf.ByteBufUtil] (vert.x-eventloop-thread-3) -Dio.netty.maxThreadLocalCharBufferSize: 16384
2020-05-28 12:53:19,970 INFO  [io.quarkus] (Quarkus Main Thread) iot-demo-device 1.0.0-SNAPSHOT (powered by Quarkus 1.4.1.Final) started in 1.312s. Listening on: http://0.0.0.0:8080
2020-05-28 12:53:19,984 INFO  [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
2020-05-28 12:53:19,984 INFO  [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, qpid-jms, rest-client, rest-client-jackson, resteasy, scheduler]
2020-05-28 12:53:20,001 TRACE [io.qua.sch.run.SimpleScheduler] (pool-3-thread-1) Evaluate trigger IntervalTrigger [id=1_com.redhat.emeapd.iotdemo.device.service.core.DeviceServiceImpl_ScheduledInvoker_run_72e66771a77415a7284d3ae42331659c186071de, interval=1000000]
2020-05-28 12:53:20,001 DEBUG [io.qua.sch.run.SimpleScheduler] (pool-3-thread-1) Executing scheduled task for trigger IntervalTrigger [id=1_com.redhat.emeapd.iotdemo.device.service.core.DeviceServiceImpl_ScheduledInvoker_run_72e66771a77415a7284d3ae42331659c186071de, interval=1000000]
2020-05-28 12:53:20,002 INFO  [com.red.eme.iot.dev.ser.cor.DeviceServiceImpl] (executor-thread-1) setProductLineParams() - ProductLineBean productLine=ProductLineBean [temperatureAvg=280, temperatureDelta=3, rpmAvg=90, rpmDelta=2, coolingAvg=20, coolingDelta=2]
2020-05-28 12:53:20,002 INFO  [com.red.eme.iot.dev.ser.pro.ProductionServiceImpl] (executor-thread-1) 
Setting production parameters:
    int temperatureAvg=280
    int temperatureDelta=3
    int rpmAvg=90
    int rpmDelta=2
2020-05-28 12:53:20,002 INFO  [com.red.eme.iot.dev.ser.coo.CoolingServiceImpl] (executor-thread-1) 
Setting cooling parameters:
    coolingAvg = 20
    coolingDelta = 2
2020-05-28 12:53:20,006 INFO  [com.red.eme.iot.dev.ser.cor.DeviceServiceImpl] (executor-thread-1) Sending production data #1 to the server for validation 
    ProductionBean [temperature=284, rpm=93]
2020-05-28 12:53:20,070 DEBUG [org.apa.qpi.jms.tra.net.EpollSupport] (executor-thread-1) Unable to check for Epoll support due to missing class definition: java.lang.NoClassDefFoundError: io/netty/channel/epoll/Epoll
    at org.apache.qpid.jms.transports.netty.EpollSupport.isAvailable(EpollSupport.java:37)
    at org.apache.qpid.jms.transports.netty.NettyTcpTransport.connect(NettyTcpTransport.java:141)
    at org.apache.qpid.jms.provider.amqp.AmqpProvider.connect(AmqpProvider.java:230)
    at org.apache.qpid.jms.JmsConnection.connect(JmsConnection.java:162)
    at org.apache.qpid.jms.JmsConnectionFactory.createConnection(JmsConnectionFactory.java:212)
    at org.apache.qpid.jms.JmsConnectionFactory.createContext(JmsConnectionFactory.java:332)
    at org.apache.qpid.jms.JmsConnectionFactory.createContext(JmsConnectionFactory.java:320)
    at org.amqphub.quarkus.qpid.jms.runtime.QpidJmsProducer_ProducerMethod_connectionFactory_77384d97dd5fab56fb7d89e045176235cbda65cd_ClientProxy.createContext(QpidJmsProducer_ProducerMethod_connectionFactory_77384d97dd5fab56fb7d89e045176235cbda65cd_ClientProxy.zig:82)
    at com.redhat.emeapd.iotdemo.device.service.messaging.MessagingServiceImpl.postConstruct(MessagingServiceImpl.java:91)
    at com.redhat.emeapd.iotdemo.device.service.messaging.MessagingServiceImpl_Bean.create(MessagingServiceImpl_Bean.zig:914)
    at com.redhat.emeapd.iotdemo.device.service.messaging.MessagingServiceImpl_Bean.create(MessagingServiceImpl_Bean.zig:1020)
    at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:79)
    at io.quarkus.arc.impl.ComputingCache$CacheFunction.lambda$apply$0(ComputingCache.java:99)
    at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:26)
    at io.quarkus.arc.impl.ComputingCache.getValue(ComputingCache.java:41)
    at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:25)
    at com.redhat.emeapd.iotdemo.device.service.messaging.MessagingServiceImpl_ClientProxy.arc$delegate(MessagingServiceImpl_ClientProxy.zig:276)
    at com.redhat.emeapd.iotdemo.device.service.messaging.MessagingServiceImpl_ClientProxy.sendProductionData(MessagingServiceImpl_ClientProxy.zig:340)
    at com.redhat.emeapd.iotdemo.device.service.core.DeviceServiceImpl.run(DeviceServiceImpl.java:111)
    at com.redhat.emeapd.iotdemo.device.service.core.DeviceServiceImpl_ClientProxy.run(DeviceServiceImpl_ClientProxy.zig:306)
    at com.redhat.emeapd.iotdemo.device.service.core.DeviceServiceImpl_ScheduledInvoker_run_72e66771a77415a7284d3ae42331659c186071de.invokeBean(DeviceServiceImpl_ScheduledInvoker_run_72e66771a77415a7284d3ae42331659c186071de.zig:45)
    at io.quarkus.arc.runtime.BeanInvoker.invoke(BeanInvoker.java:20)
    at io.quarkus.scheduler.runtime.SimpleScheduler$2.run(SimpleScheduler.java:124)
    at io.quarkus.runtime.CleanableExecutor$CleaningRunnable.run(CleanableExecutor.java:231)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
    at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2046)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1578)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452)
    at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
    at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
    at java.base/java.lang.Thread.run(Thread.java:834)
    at org.jboss.threads.JBossThread.run(JBossThread.java:479)
Caused by: java.lang.ClassNotFoundException: io.netty.channel.epoll.Epoll
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:357)
    at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:310)
    ... 34 more

2020-05-28 12:53:20,070 TRACE [org.apa.qpi.jms.tra.net.NettyTcpTransport] (executor-thread-1) Netty Transport using NIO mode
2020-05-28 12:53:20,070 TRACE [io.net.cha.nio.NioEventLoop] (executor-thread-1) instrumented a special java.util.Set into: sun.nio.ch.EPollSelectorImpl@62564e14
2020-05-28 12:53:20,079 TRACE [org.apa.qpi.jms.tra.TransportSupport] (AmqpProvider :(1):[amqps://broker-amqp-iot-mw-dev.apps.shift.rhepds.com:443]) Getting SSLContext instance using protocol: TLS
2020-05-28 12:53:20,119 TRACE [org.apa.qpi.jms.tra.TransportSupport] (AmqpProvider :(1):[amqps://broker-amqp-iot-mw-dev.apps.shift.rhepds.com:443]) Attempt to load KeyStore from location /home/abattagl/git/iot-demo-device/target/classes/amqcerts/client.ks of type jks
2020-05-28 12:53:20,384 TRACE [org.apa.qpi.jms.tra.TransportSupport] (AmqpProvider :(1):[amqps://broker-amqp-iot-mw-dev.apps.shift.rhepds.com:443]) Default protocols from the SSLEngine: [TLSv1.3, TLSv1.2, TLSv1.1, TLSv1]
2020-05-28 12:53:20,384 TRACE [org.apa.qpi.jms.tra.TransportSupport] (AmqpProvider :(1):[amqps://broker-amqp-iot-mw-dev.apps.shift.rhepds.com:443]) Disabled protocols: [SSLv2Hello, SSLv3]
2020-05-28 12:53:20,384 TRACE [org.apa.qpi.jms.tra.TransportSupport] (AmqpProvider :(1):[amqps://broker-amqp-iot-mw-dev.apps.shift.rhepds.com:443]) Enabled protocols: [TLSv1.3, TLSv1.2, TLSv1.1, TLSv1]
2020-05-28 12:53:20,384 TRACE [org.apa.qpi.jms.tra.TransportSupport] (AmqpProvider :(1):[amqps://broker-amqp-iot-mw-dev.apps.shift.rhepds.com:443]) Default cipher suites from the SSLEngine: [TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
2020-05-28 12:53:20,384 TRACE [org.apa.qpi.jms.tra.TransportSupport] (AmqpProvider :(1):[amqps://broker-amqp-iot-mw-dev.apps.shift.rhepds.com:443]) Enabled cipher suites: [TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
2020-05-28 12:53:20,527 DEBUG [io.net.uti.Recycler] (AmqpProvider :(1):[amqps://broker-amqp-iot-mw-dev.apps.shift.rhepds.com:443]) -Dio.netty.recycler.maxCapacityPerThread: 4096
2020-05-28 12:53:20,527 DEBUG [io.net.uti.Recycler] (AmqpProvider :(1):[amqps://broker-amqp-iot-mw-dev.apps.shift.rhepds.com:443]) -Dio.netty.recycler.maxSharedCapacityFactor: 2
2020-05-28 12:53:20,527 DEBUG [io.net.uti.Recycler] (AmqpProvider :(1):[amqps://broker-amqp-iot-mw-dev.apps.shift.rhepds.com:443]) -Dio.netty.recycler.linkCapacity: 16
2020-05-28 12:53:20,527 DEBUG [io.net.uti.Recycler] (AmqpProvider :(1):[amqps://broker-amqp-iot-mw-dev.apps.shift.rhepds.com:443]) -Dio.netty.recycler.ratio: 8
2020-05-28 12:53:20,529 DEBUG [io.net.buf.AbstractByteBuf] (AmqpProvider :(1):[amqps://broker-amqp-iot-mw-dev.apps.shift.rhepds.com:443]) -Dio.netty.buffer.checkAccessible: true
2020-05-28 12:53:20,529 DEBUG [io.net.buf.AbstractByteBuf] (AmqpProvider :(1):[amqps://broker-amqp-iot-mw-dev.apps.shift.rhepds.com:443]) -Dio.netty.buffer.checkBounds: true
2020-05-28 12:53:20,530 DEBUG [io.net.uti.ResourceLeakDetectorFactory] (AmqpProvider :(1):[amqps://broker-amqp-iot-mw-dev.apps.shift.rhepds.com:443]) Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@14519164
2020-05-28 12:53:21,001 TRACE [io.qua.sch.run.SimpleScheduler] (pool-3-thread-1) Evaluate trigger IntervalTrigger [id=1_com.redhat.emeapd.iotdemo.device.service.core.DeviceServiceImpl_ScheduledInvoker_run_72e66771a77415a7284d3ae42331659c186071de, interval=1000000]
2020-05-28 12:53:22,001 TRACE [io.qua.sch.run.SimpleScheduler] (pool-3-thread-1) Evaluate trigger IntervalTrigger [id=1_com.redhat.emeapd.iotdemo.device.service.core.DeviceServiceImpl_ScheduledInvoker_run_72e66771a77415a7284d3ae42331659c186071de, interval=1000000]
2020-05-28 12:53:23,000 TRACE [io.qua.sch.run.SimpleScheduler] (pool-3-thread-1) Evaluate trigger IntervalTrigger [id=1_com.redhat.emeapd.iotdemo.device.service.core.DeviceServiceImpl_ScheduledInvoker_run_72e66771a77415a7284d3ae42331659c186071de, interval=1000000]
2020-05-28 12:53:23,604 TRACE [org.apa.qpi.jms.tra.net.NettyTcpTransport] (AmqpProvider :(1):[amqps://broker-amqp-iot-mw-dev.apps.shift.rhepds.com:443]) SSL Handshake has failed: [id: 0x4f64c9b7, L:0.0.0.0/0.0.0.0:53336]
2020-05-28 12:53:23,604 TRACE [org.apa.qpi.jms.tra.net.NettyTcpTransport] (AmqpProvider :(1):[amqps://broker-amqp-iot-mw-dev.apps.shift.rhepds.com:443]) Exception on channel! Channel is [id: 0x4f64c9b7, L:0.0.0.0/0.0.0.0:53336]
2020-05-28 12:53:23,604 TRACE [org.apa.qpi.jms.tra.net.NettyTcpTransport] (AmqpProvider :(1):[amqps://broker-amqp-iot-mw-dev.apps.shift.rhepds.com:443]) Holding error until connect succeeds: null
2020-05-28 12:53:23,606 TRACE [org.apa.qpi.jms.tra.net.NettyTcpTransport] (AmqpProvider :(1):[amqps://broker-amqp-iot-mw-dev.apps.shift.rhepds.com:443]) Channel has gone inactive! Channel is [id: 0x4f64c9b7, L:0.0.0.0/0.0.0.0:53336]
2020-05-28 12:53:23,606 ERROR [org.apa.qpi.jms.JmsConnection] (executor-thread-1) Failed to connect to remote at: amqps://broker-amqp-iot-mw-dev.apps.shift.rhepds.com:443
2020-05-28 12:53:23,606 TRACE [org.apa.qpi.jms.JmsConnection] (executor-thread-1) Error: : org.apache.qpid.jms.provider.exceptions.ProviderIOException: java.nio.channels.ClosedChannelException
    at org.apache.qpid.jms.provider.exceptions.ProviderExceptionSupport.createOrPassthroughFatal(ProviderExceptionSupport.java:46)
    at org.apache.qpid.jms.provider.amqp.AmqpProvider.connect(AmqpProvider.java:308)
    at org.apache.qpid.jms.JmsConnection.connect(JmsConnection.java:162)
    at org.apache.qpid.jms.JmsConnectionFactory.createConnection(JmsConnectionFactory.java:212)
    at org.apache.qpid.jms.JmsConnectionFactory.createContext(JmsConnectionFactory.java:332)
    at org.apache.qpid.jms.JmsConnectionFactory.createContext(JmsConnectionFactory.java:320)
    at org.amqphub.quarkus.qpid.jms.runtime.QpidJmsProducer_ProducerMethod_connectionFactory_77384d97dd5fab56fb7d89e045176235cbda65cd_ClientProxy.createContext(QpidJmsProducer_ProducerMethod_connectionFactory_77384d97dd5fab56fb7d89e045176235cbda65cd_ClientProxy.zig:82)
    at com.redhat.emeapd.iotdemo.device.service.messaging.MessagingServiceImpl.postConstruct(MessagingServiceImpl.java:91)
    at com.redhat.emeapd.iotdemo.device.service.messaging.MessagingServiceImpl_Bean.create(MessagingServiceImpl_Bean.zig:914)
    at com.redhat.emeapd.iotdemo.device.service.messaging.MessagingServiceImpl_Bean.create(MessagingServiceImpl_Bean.zig:1020)
    at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:79)
    at io.quarkus.arc.impl.ComputingCache$CacheFunction.lambda$apply$0(ComputingCache.java:99)
    at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:26)
    at io.quarkus.arc.impl.ComputingCache.getValue(ComputingCache.java:41)
    at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:25)
    at com.redhat.emeapd.iotdemo.device.service.messaging.MessagingServiceImpl_ClientProxy.arc$delegate(MessagingServiceImpl_ClientProxy.zig:276)
    at com.redhat.emeapd.iotdemo.device.service.messaging.MessagingServiceImpl_ClientProxy.sendProductionData(MessagingServiceImpl_ClientProxy.zig:340)
    at com.redhat.emeapd.iotdemo.device.service.core.DeviceServiceImpl.run(DeviceServiceImpl.java:111)
    at com.redhat.emeapd.iotdemo.device.service.core.DeviceServiceImpl_ClientProxy.run(DeviceServiceImpl_ClientProxy.zig:306)
    at com.redhat.emeapd.iotdemo.device.service.core.DeviceServiceImpl_ScheduledInvoker_run_72e66771a77415a7284d3ae42331659c186071de.invokeBean(DeviceServiceImpl_ScheduledInvoker_run_72e66771a77415a7284d3ae42331659c186071de.zig:45)
    at io.quarkus.arc.runtime.BeanInvoker.invoke(BeanInvoker.java:20)
    at io.quarkus.scheduler.runtime.SimpleScheduler$2.run(SimpleScheduler.java:124)
    at io.quarkus.runtime.CleanableExecutor$CleaningRunnable.run(CleanableExecutor.java:231)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
    at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2046)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1578)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452)
    at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
    at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
    at java.base/java.lang.Thread.run(Thread.java:834)
    at org.jboss.threads.JBossThread.run(JBossThread.java:479)
Caused by: java.nio.channels.ClosedChannelException
    at io.netty.handler.ssl.SslHandler.channelInactive(SslHandler.java:1062)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:260)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:246)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:239)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactive(DefaultChannelPipeline.java:1405)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:260)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:246)
    at io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:901)
    at io.netty.channel.AbstractChannel$AbstractUnsafe$8.run(AbstractChannel.java:818)
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:497)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at java.base/java.lang.Thread.run(Thread.java:834)

2020-05-28 12:53:23,607 DEBUG [io.net.buf.PoolThreadCache] (AmqpProvider :(1):[amqps://broker-amqp-iot-mw-dev.apps.shift.rhepds.com:443]) Freed 2 thread-local buffer(s) from thread: AmqpProvider :(1):[amqps://broker-amqp-iot-mw-dev.apps.shift.rhepds.com:443]
2020-05-28 12:53:23,609 ERROR [com.red.eme.iot.dev.ser.cor.DeviceServiceImpl] (executor-thread-1) Device Error: javax.jms.JMSRuntimeException: java.nio.channels.ClosedChannelException
    at org.apache.qpid.jms.exceptions.JmsExceptionSupport.createRuntimeException(JmsExceptionSupport.java:211)
    at org.apache.qpid.jms.JmsConnectionFactory.createContext(JmsConnectionFactory.java:335)
    at org.apache.qpid.jms.JmsConnectionFactory.createContext(JmsConnectionFactory.java:320)
    at org.amqphub.quarkus.qpid.jms.runtime.QpidJmsProducer_ProducerMethod_connectionFactory_77384d97dd5fab56fb7d89e045176235cbda65cd_ClientProxy.createContext(QpidJmsProducer_ProducerMethod_connectionFactory_77384d97dd5fab56fb7d89e045176235cbda65cd_ClientProxy.zig:82)
    at com.redhat.emeapd.iotdemo.device.service.messaging.MessagingServiceImpl.postConstruct(MessagingServiceImpl.java:91)
    at com.redhat.emeapd.iotdemo.device.service.messaging.MessagingServiceImpl_Bean.create(MessagingServiceImpl_Bean.zig:914)
    at com.redhat.emeapd.iotdemo.device.service.messaging.MessagingServiceImpl_Bean.create(MessagingServiceImpl_Bean.zig:1020)
    at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:79)
    at io.quarkus.arc.impl.ComputingCache$CacheFunction.lambda$apply$0(ComputingCache.java:99)
    at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:26)
    at io.quarkus.arc.impl.ComputingCache.getValue(ComputingCache.java:41)
    at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:25)
    at com.redhat.emeapd.iotdemo.device.service.messaging.MessagingServiceImpl_ClientProxy.arc$delegate(MessagingServiceImpl_ClientProxy.zig:276)
    at com.redhat.emeapd.iotdemo.device.service.messaging.MessagingServiceImpl_ClientProxy.sendProductionData(MessagingServiceImpl_ClientProxy.zig:340)
    at com.redhat.emeapd.iotdemo.device.service.core.DeviceServiceImpl.run(DeviceServiceImpl.java:111)
    at com.redhat.emeapd.iotdemo.device.service.core.DeviceServiceImpl_ClientProxy.run(DeviceServiceImpl_ClientProxy.zig:306)
    at com.redhat.emeapd.iotdemo.device.service.core.DeviceServiceImpl_ScheduledInvoker_run_72e66771a77415a7284d3ae42331659c186071de.invokeBean(DeviceServiceImpl_ScheduledInvoker_run_72e66771a77415a7284d3ae42331659c186071de.zig:45)
    at io.quarkus.arc.runtime.BeanInvoker.invoke(BeanInvoker.java:20)
    at io.quarkus.scheduler.runtime.SimpleScheduler$2.run(SimpleScheduler.java:124)
    at io.quarkus.runtime.CleanableExecutor$CleaningRunnable.run(CleanableExecutor.java:231)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
    at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2046)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1578)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452)
    at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
    at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
    at java.base/java.lang.Thread.run(Thread.java:834)
    at org.jboss.threads.JBossThread.run(JBossThread.java:479)
Caused by: javax.jms.JMSException: java.nio.channels.ClosedChannelException
    at org.apache.qpid.jms.provider.ProviderException.toJMSException(ProviderException.java:34)
    at org.apache.qpid.jms.exceptions.JmsExceptionSupport.create(JmsExceptionSupport.java:80)
    at org.apache.qpid.jms.exceptions.JmsExceptionSupport.create(JmsExceptionSupport.java:112)
    at org.apache.qpid.jms.JmsConnection.connect(JmsConnection.java:176)
    at org.apache.qpid.jms.JmsConnectionFactory.createConnection(JmsConnectionFactory.java:212)
    at org.apache.qpid.jms.JmsConnectionFactory.createContext(JmsConnectionFactory.java:332)
    ... 28 more
Caused by: org.apache.qpid.jms.provider.exceptions.ProviderIOException: java.nio.channels.ClosedChannelException
    at org.apache.qpid.jms.provider.exceptions.ProviderExceptionSupport.createOrPassthroughFatal(ProviderExceptionSupport.java:46)
    at org.apache.qpid.jms.provider.amqp.AmqpProvider.connect(AmqpProvider.java:308)
    at org.apache.qpid.jms.JmsConnection.connect(JmsConnection.java:162)
    ... 30 more
Caused by: java.nio.channels.ClosedChannelException
    at io.netty.handler.ssl.SslHandler.channelInactive(SslHandler.java:1062)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:260)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:246)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:239)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactive(DefaultChannelPipeline.java:1405)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:260)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:246)
    at io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:901)
    at io.netty.channel.AbstractChannel$AbstractUnsafe$8.run(AbstractChannel.java:818)
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:497)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at java.base/java.lang.Thread.run(Thread.java:834)

Заранее большое спасибо за вашу поддержку

Андреа

...