I have created a simple Kotlin app:

fun main() {
        val artemisData = Paths.get("target/artemis").also {
Files.createDirectories(it) }

        val config = ConfigurationImpl().apply {
                isPersistenceEnabled = true

                journalDirectory = artemisData.resolve("journal").toString()
                bindingsDirectory = artemisData.resolve("bindings").toString()
                largeMessagesDirectory = 
artemisData.resolve("large-messages").toString()
                pagingDirectory = artemisData.resolve("paging").toString()


                addQueueConfiguration(
                                CoreQueueConfiguration()
                                                .setName("taskProcess")
                                                .setAddress("taskProcess")
                                                
.setRoutingType(RoutingType.ANYCAST)
                )


                addAddressesSetting("#", AddressSettings().apply {
                        isAutoCreateAddresses = true
                        isAutoCreateQueues = true
                        defaultAddressRoutingType = RoutingType.ANYCAST
                        deadLetterAddress = "DLQ".simple()
                })

                isSecurityEnabled = false
                isGracefulShutdownEnabled = false
                addAcceptorConfiguration("invm", "vm://0")
        }

        val server = ActiveMQServers.newActiveMQServer(config)

        try {
                server.start()

                ActiveMQClient.createServerLocator(false,
TransportConfiguration(InVMConnectorFactory::class.java.name)).use { locator
->
                        val sf = locator.createSessionFactory()
                        sf.use { factory ->
/*
                                factory.createSession().use { session ->
                                        
session.createConsumer("taskProcess").use { consumer ->
                                                while (true) {
                                                        val msgReceived = 
consumer.receive(1000L) ?: break
                                                        println("message = " + 
msgReceived.bodyBuffer.readString())
                                                }
                                        }
                                }
*/
                        }
                        println("sesion factory closed")
                }

        } finally {
                server.stop()
                println("server stopped")
        }
}

server stopped
Mar 09, 2020 9:41:27 AM
org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl stop
INFO: AMQ221002: Apache ActiveMQ Artemis Message Broker version 2.11.0
[c391f658-61e1-11ea-9910-34e6d7649e27] stopped, uptime 2.331 seconds

The app runs, and terminates properly but ... 

you have to wait additional 1 min 5s for the java process to terminate. It
hangs on java.lang.ref.Reference#waitForReferencePendingList

If you do not create the session factory - the termination is immediate.

What am I doing wrong? As you see all resources use try-with-resources and
are properly closed.








--
Sent from: http://activemq.2283324.n4.nabble.com/ActiveMQ-User-f2341805.html

Reply via email to