cannot receive messages using mqtt subscription.

I've found the similar issue #20 . Generally the same problem.
I'm using pulsar 2.8.0 (by docker), and mop 2.9.0-SNAPSHOT.
I've sent a message to topic by mqtt protocol, and I can receive the message using pulsar consumer, but failed on mqtt consumer.
I've used nodejs
const mqtt = require('mqtt')

const host = '<IP_ADDRESS>'
const port = '1883'
const clientId = `mqtt_${Math.random().toString(16).slice(3)}`

const connectUrl = `mqtt://${host}:${port}`
const client = mqtt.connect(connectUrl, {
  clientId,
  clean: true,
  connectTimeout: 4000,
  reconnectPeriod: 1000,
})

const topic = 'nodejs-mqtt'
client.on('connect', () => {
  console.log('Connected')
  client.subscribe([topic], () => {
    console.log(`Subscribe to topic '${topic}'`)
  })
  client.publish(topic, 'nodejs mqtt test', { qos: 0, retain: false }, (error) => {
    if (error) {
      console.error(error)
    }
  })
})
client.on('message', (top, payload) => {
  console.log('Received Message:', top, payload.toString())
})

and also java (the same code in READ.MD
    @Test
    public void test03() throws Exception {
        MQTT mqtt = new MQTT();
        mqtt.setHost("<IP_ADDRESS>", 1883);
        mqtt.setClientId("java-test");
        BlockingConnection connection = mqtt.blockingConnection();
        connection.connect();
        Topic[] topics = { new Topic("persistent://public/default/nodejs-mqtt", QoS.AT_LEAST_ONCE) };
        connection.subscribe(topics);

        // publish message
        connection.publish("persistent://public/default/nodejs-mqtt", "Hello MOP!".getBytes(), QoS.AT_LEAST_ONCE, false);

        // receive message
        try {
            org.fusesource.mqtt.client.Message received = connection.receive();
            System.out.println("Message received, " + new String(received.getPayload()));
        } catch(Exception e) {
            e.printStackTrace();
        }

    }

but no messages returned.
I've also tried mop v2.8.0 but nothing changed.
As I'm using pulsar-manager, I can see from the management page that the subscription type in MQTT consumer is 'NONE', as it was 'EXCLUSIVE' when I was using pulsar consumer. I don't know if it matters.

Pls tell me what I've done wrong. Thx.

@Technoboy-
11:11:10.685 [worker-scheduler-0] INFO  org.apache.pulsar.functions.worker.SchedulerManager - Schedule summary - execution time: 0.061135051 sec | total unassigned: 0 | stats: {"Added": 0, "Updated": 0, "removed": 0}
{
  "c-standalone-fw-<IP_ADDRESS>-8080" : {
    "originalNumAssignments" : 0,
    "finalNumAssignments" : 0,
    "instancesAdded" : 0,
    "instancesRemoved" : 0,
    "instancesUpdated" : 0,
    "alive" : true
  }
}

------------------------------------------------ start to run ----------------------------------------------------------------------

11:11:38.642 [pulsar-web-63-5] INFO  org.eclipse.jetty.server.RequestLog - <IP_ADDRESS> - - [08/Sep/2021:11:11:38 +0800] "GET /admin/v2/persistent/public/functions/coordinate/stats?getPreciseBacklog=false&subscriptionBacklogSize=false HTTP/1.1" 200 1974 "-" "Pulsar-Java-v2.8.0" 11
11:11:38.652 [pulsar-web-63-1] INFO  org.eclipse.jetty.server.RequestLog - <IP_ADDRESS> - - [08/Sep/2021:11:11:38 +0800] "GET /admin/v2/persistent/public/functions/coordinate/stats?getPreciseBacklog=false&subscriptionBacklogSize=false HTTP/1.1" 200 1974 "-" "Pulsar-Java-v2.8.0" 5
11:11:44.687 [pulsar-io-29-1] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - process CONNECT message. CId=java-test, username=null
11:11:44.687 [pulsar-io-29-1] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - Authentication is disabled, allowing client. CId=java-test, username=null
11:11:44.689 [pulsar-io-29-1] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - Configuring connection. CId=java-test
11:11:44.691 [pulsar-io-29-1] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - Sending connect ACK. CId=java-test
11:11:44.696 [pulsar-io-29-1] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - The connect ACK has been sent. CId=java-test
11:11:44.696 [pulsar-io-29-1] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - The CONNECT message has been processed. CId=java-test, username=null success=true
11:11:44.717 [pulsar-io-29-1] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - [Subscribe] [[id: 0x401c706c, L:/<IP_ADDRESS>:1883 - R:/<IP_ADDRESS>:3625]] msg: MqttSubscribeMessage[fixedHeader=MqttFixedHeader[messageType=SUBSCRIBE, isDup=false, qosLevel=AT_LEAST_ONCE, isRetain=false, remainingLength=44], variableHeader=MqttMessageIdAndPropertiesVariableHeader[messageId=1, properties=io.netty.handler.codec.mqtt.MqttProperties@7db7fb65], payload=MqttSubscribePayload[MqttTopicSubscription[topicFilter=persistent://public/default/nodejs-mqtt, option=SubscriptionOption[qos=AT_LEAST_ONCE, noLocal=false, retainAsPublished=false, retainHandling=SEND_AT_SUBSCRIBE]]]]
11:11:44.726 [pulsar-27-2] INFO  org.apache.pulsar.broker.namespace.OwnershipCache - Trying to acquire ownership of public/default/0xc0000000_0xffffffff
11:11:44.740 [pulsar-ordered-OrderedExecutor-4-0-EventThread] INFO  org.apache.pulsar.broker.namespace.OwnershipCache - Successfully acquired ownership of /namespace/public/default/0xc0000000_0xffffffff
11:11:44.747 [pulsar-ordered-OrderedExecutor-5-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - Opening managed ledger public/default/persistent/nodejs-mqtt
11:11:44.752 [BookKeeperClientWorker-OrderedExecutor-0-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - [public/default/persistent/nodejs-mqtt] Creating ledger, metadata: {component=[109, 97, 110, 97, 103, 101, 100, 45, 108, 101, 100, 103, 101, 114], pulsar/managed-ledger=[112, 117, 98, 108, 105, 99, 47, 100, 101, 102, 97, 117, 108, 116, 47, 112, 101, 114, 115, 105, 115, 116, 101, 110, 116, 47, 110, 111, 100, 101, 106, 115, 45, 109, 113, 116, 116], application=[112, 117, 108, 115, 97, 114]} - metadata ops timeout : 60 seconds
11:11:44.759 [main-EventThread] INFO  org.apache.bookkeeper.client.LedgerCreateOp - Ensemble: [<IP_ADDRESS>:3181] for ledger: 182
11:11:44.759 [BookKeeperClientWorker-OrderedExecutor-0-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - [public/default/persistent/nodejs-mqtt] Created ledger 182
11:11:44.762 [bookkeeper-ml-scheduler-OrderedScheduler-2-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - [public/default/persistent/nodejs-mqtt] Loading cursor java-test
11:11:44.763 [bookkeeper-ml-scheduler-OrderedScheduler-2-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedCursorImpl - [public/default/persistent/nodejs-mqtt] Recovering from bookkeeper ledger cursor: java-test
11:11:44.763 [bookkeeper-ml-scheduler-OrderedScheduler-2-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - [public/default/persistent/nodejs-mqtt] Loading cursor sub-name
11:11:44.763 [bookkeeper-ml-scheduler-OrderedScheduler-2-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedCursorImpl - [public/default/persistent/nodejs-mqtt] Recovering from bookkeeper ledger cursor: sub-name
11:11:44.764 [bookkeeper-ml-scheduler-OrderedScheduler-2-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedCursorImpl - [public/default/persistent/nodejs-mqtt] Cursor java-test recovered to position 27:2
11:11:44.767 [bookkeeper-ml-scheduler-OrderedScheduler-2-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - [public/default/persistent/nodejs-mqtt] Recovery for cursor java-test completed. pos=27:2 -- todo=1
11:11:44.767 [bookkeeper-ml-scheduler-OrderedScheduler-2-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedCursorImpl - [public/default/persistent/nodejs-mqtt] Cursor sub-name recovered to position 27:1
11:11:44.767 [bookkeeper-ml-scheduler-OrderedScheduler-2-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - [public/default/persistent/nodejs-mqtt] Recovery for cursor sub-name completed. pos=27:1 -- todo=0
11:11:44.767 [bookkeeper-ml-scheduler-OrderedScheduler-2-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedLedgerFactoryImpl - [public/default/persistent/nodejs-mqtt] Successfully initialize managed ledger
11:11:44.768 [bookkeeper-ml-scheduler-OrderedScheduler-2-0] INFO  org.apache.pulsar.broker.service.AbstractTopic - Disabling publish throttling for persistent://public/default/nodejs-mqtt
11:11:44.768 [bookkeeper-ml-scheduler-OrderedScheduler-2-0] INFO  org.apache.pulsar.broker.service.persistent.PersistentTopic - [persistent://public/default/nodejs-mqtt] There are no replicated subscriptions on the topic
11:11:44.769 [bookkeeper-ml-scheduler-OrderedScheduler-2-0] INFO  org.apache.pulsar.broker.service.BrokerService - Created topic persistent://public/default/nodejs-mqtt - dedup is disabled
11:11:44.774 [bookkeeper-ml-scheduler-OrderedScheduler-2-0] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - Sending SUBACK message MqttSubAckMessage[fixedHeader=MqttFixedHeader[messageType=SUBACK, isDup=false, qosLevel=AT_MOST_ONCE, isRetain=false, remainingLength=0], variableHeader=MqttMessageIdAndPropertiesVariableHeader[messageId=1, properties=io.netty.handler.codec.mqtt.MqttProperties@7db7fb65], payload=MqttSubAckPayload[reasonCodes=[1]]] to java-test
11:11:44.802 [pulsar-io-29-1] INFO  com.scurrilous.circe.checksum.Crc32cIntChecksum - SSE4.2 CRC32C provider initialized
11:11:44.829 [pulsar-io-29-4] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x8a1c4281, L:/<IP_ADDRESS>:32964 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
11:11:44.829 [pulsar-io-29-4] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x8a1c4281, L:/<IP_ADDRESS>:32964 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
11:11:44.833 [pulsar-io-29-4] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0xd4af412c, L:/<IP_ADDRESS>:32968 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
11:11:44.833 [pulsar-io-29-4] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0xd4af412c, L:/<IP_ADDRESS>:32968 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
11:11:44.834 [bookie-io-1-3] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
11:11:44.834 [bookie-io-1-3] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0xf491b97c, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:32964]
11:11:44.836 [pulsar-io-29-8] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0xa118ab0f, L:/<IP_ADDRESS>:32970 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
11:11:44.836 [pulsar-io-29-8] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0xa118ab0f, L:/<IP_ADDRESS>:32970 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
11:11:44.837 [pulsar-io-29-1] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0xce18acac, L:/<IP_ADDRESS>:32972 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
11:11:44.837 [bookie-io-1-5] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
11:11:44.837 [pulsar-io-29-1] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0xce18acac, L:/<IP_ADDRESS>:32972 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
11:11:44.837 [bookie-io-1-5] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x80634616, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:32968]
11:11:44.837 [bookie-io-1-4] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
11:11:44.838 [bookie-io-1-4] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x2151bb47, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:32966]
11:11:44.839 [pulsar-io-29-7] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x6493b5c4, L:/<IP_ADDRESS>:32978 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
11:11:44.839 [pulsar-io-29-7] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x6493b5c4, L:/<IP_ADDRESS>:32978 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
11:11:44.839 [pulsar-io-29-5] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0xd666e5bf, L:/<IP_ADDRESS>:32966 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
11:11:44.839 [pulsar-io-29-5] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0xd666e5bf, L:/<IP_ADDRESS>:32966 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
11:11:44.839 [pulsar-io-29-1] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0xb1cdccdc, L:/<IP_ADDRESS>:32980 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
11:11:44.839 [pulsar-io-29-2] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x0cb6c4bc, L:/<IP_ADDRESS>:32976 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
11:11:44.839 [pulsar-io-29-1] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0xb1cdccdc, L:/<IP_ADDRESS>:32980 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
11:11:44.842 [bookie-io-1-1] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
11:11:44.842 [bookie-io-1-1] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x7d207a96, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:32976]
11:11:44.842 [pulsar-io-29-3] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x53750769, L:/<IP_ADDRESS>:32986 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
11:11:44.842 [pulsar-io-29-3] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x53750769, L:/<IP_ADDRESS>:32986 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
11:11:44.842 [pulsar-io-29-6] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x8ab59be1, L:/<IP_ADDRESS>:32988 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
11:11:44.843 [pulsar-io-29-6] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x8ab59be1, L:/<IP_ADDRESS>:32988 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
11:11:44.843 [bookie-io-1-1] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
11:11:44.843 [bookie-io-1-1] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x761895c9, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:32992]
11:11:44.843 [pulsar-io-29-2] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x0cb6c4bc, L:/<IP_ADDRESS>:32976 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
11:11:44.843 [bookie-io-1-6] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
11:11:44.843 [bookie-io-1-6] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0xaf840a98, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:32970]
11:11:44.844 [pulsar-io-29-8] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x2ed86bc2, L:/<IP_ADDRESS>:32974 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
11:11:44.844 [pulsar-io-29-7] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0xe252744a, L:/<IP_ADDRESS>:32984 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
11:11:44.844 [pulsar-io-29-8] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x2ed86bc2, L:/<IP_ADDRESS>:32974 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
11:11:44.844 [pulsar-io-29-7] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0xe252744a, L:/<IP_ADDRESS>:32984 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
11:11:44.845 [pulsar-io-29-5] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x44b4c199, L:/<IP_ADDRESS>:32982 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
11:11:44.845 [pulsar-io-29-5] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x44b4c199, L:/<IP_ADDRESS>:32982 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
11:11:44.846 [bookie-io-1-7] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
11:11:44.846 [bookie-io-1-7] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x8338affe, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:32972]
11:11:44.846 [bookie-io-1-8] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
11:11:44.846 [bookie-io-1-8] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0xb8c7824e, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:32974]
11:11:44.847 [bookie-io-1-2] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
11:11:44.847 [bookie-io-1-3] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
11:11:44.847 [bookie-io-1-2] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x725ff9bc, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:32978]
11:11:44.847 [bookie-io-1-3] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x8e80bb00, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:32980]
11:11:44.847 [bookie-io-1-4] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
11:11:44.847 [bookie-io-1-5] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
11:11:44.847 [bookie-io-1-4] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0xa1e86790, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:32982]
11:11:44.847 [bookie-io-1-5] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x36883f02, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:32984]
11:11:44.849 [pulsar-io-29-3] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0xb285d72b, L:/<IP_ADDRESS>:32992 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
11:11:44.849 [pulsar-io-29-6] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0xd4cf75ba, L:/<IP_ADDRESS>:32994 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
11:11:44.849 [pulsar-io-29-3] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0xb285d72b, L:/<IP_ADDRESS>:32992 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
11:11:44.849 [pulsar-io-29-6] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0xd4cf75ba, L:/<IP_ADDRESS>:32994 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
11:11:44.852 [pulsar-io-29-2] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0xf5039218, L:/<IP_ADDRESS>:32990 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
11:11:44.852 [pulsar-io-29-2] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0xf5039218, L:/<IP_ADDRESS>:32990 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
11:11:44.852 [bookie-io-1-6] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
11:11:44.852 [bookie-io-1-6] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x36cc6a7c, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:32986]
11:11:44.852 [bookie-io-1-7] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
11:11:44.852 [bookie-io-1-7] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x99d230a8, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:32988]
11:11:44.853 [bookie-io-1-8] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
11:11:44.853 [bookie-io-1-8] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x362ec9a1, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:32990]
11:11:44.853 [bookie-io-1-2] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
11:11:44.853 [bookie-io-1-2] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0xc9bfeed7, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:32994]
11:11:51.986 [SyncThread-7-1] INFO  org.apache.bookkeeper.bookie.EntryLogManagerBase - Creating a new entry log file because current active log channel has not initialized yet
11:11:51.993 [SyncThread-7-1] INFO  org.apache.bookkeeper.bookie.EntryLoggerAllocator - Created new entry log file data/standalone/bookkeeper0/current/e.log for logId 14.
11:11:51.998 [pool-6-thread-1] INFO  org.apache.bookkeeper.bookie.EntryLoggerAllocator - Created new entry log file data/standalone/bookkeeper0/current/f.log for logId 15.
11:11:52.017 [SyncThread-7-1] INFO  org.apache.bookkeeper.bookie.Journal - garbage collected journal 17bc30db9ef.txn
11:12:08.633 [pulsar-web-63-6] INFO  org.eclipse.jetty.server.RequestLog - <IP_ADDRESS> - - [08/Sep/2021:11:12:08 +0800] "GET /admin/v2/persistent/public/functions/coordinate/stats?getPreciseBacklog=false&subscriptionBacklogSize=false HTTP/1.1" 200 1974 "-" "Pulsar-Java-v2.8.0" 7
11:12:08.640 [pulsar-web-63-3] INFO  org.eclipse.jetty.server.RequestLog - <IP_ADDRESS> - - [08/Sep/2021:11:12:08 +0800] "GET /admin/v2/persistent/public/functions/coordinate/stats?getPreciseBacklog=false&subscriptionBacklogSize=false HTTP/1.1" 200 1974 "-" "Pulsar-Java-v2.8.0" 3

I also tried aop and cannot receive messages either...
It's more likely that something is wrong with my pulsar or network.
But I install pulsar locally and basically didn't change anything.
Or I should install something but I haven't ?

@Technoboy-
I tried kop.
As mentioned in the doc, when I execute the kafka producer:
./bin/kafka-console-producer.sh --broker-list <server-ip>:9092 --topic test

it also failed.
[2021-09-08 13:36:20,220] WARN [Producer clientId=console-producer] Connection to node -1 (/<server-ip>:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2021-09-08 13:36:20,221] WARN [Producer clientId=console-producer] Bootstrap broker <server-ip>:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)

But when I modified the lisenter config in standalone.xml from <IP_ADDRESS> to certain IP it works.
kafkaListeners=PLAINTEXT://<IP_ADDRESS>:9092
kafkaAdvertisedListeners=PLAINTEXT://<IP_ADDRESS>:9092

I'm wondering if the ip in listerner and advertisedAddress matters.
I'm using mqttListeners=mqtt://<IP_ADDRESS>:1883 with advertisedAddress using a certain ip.

@Technoboy-
I tried kop.
As mentioned in the doc, when I execute the kafka producer:
./bin/kafka-console-producer.sh --broker-list <server-ip>:9092 --topic test

it also failed.
[2021-09-08 13:36:20,220] WARN [Producer clientId=console-producer] Connection to node -1 (/<server-ip>:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2021-09-08 13:36:20,221] WARN [Producer clientId=console-producer] Bootstrap broker <server-ip>:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)

But when I modified the lisenter config in standalone.xml from <IP_ADDRESS> to certain IP it works.
kafkaListeners=PLAINTEXT://<IP_ADDRESS>:9092
kafkaAdvertisedListeners=PLAINTEXT://<IP_ADDRESS>:9092

I'm wondering if the ip in listerner and advertisedAddress matters.
I'm using mqttListeners=mqtt://<IP_ADDRESS>:1883 with advertisedAddress using a certain ip.

Config seems all right .
Could you help to enable the log to debug level, and try to restart the mop , then help to paste the debug log here?

I've add
      - name: io.streamnative.pulsar.handlers.mqtt
        level: debug
        additivity: false
        AppenderRef:
          - ref: Console

and reexecute the test.
14:49:46.630 [pulsar-io-29-3] DEBUG io.streamnative.pulsar.handlers.mqtt.MQTTInboundHandler - Processing MQTT Inbound handler message, type=CONNECT
14:49:46.631 [pulsar-io-29-3] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - process CONNECT message. CId=java-test, username=null
14:49:46.632 [pulsar-io-29-3] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - Authentication is disabled, allowing client. CId=java-test, username=null
14:49:46.636 [pulsar-io-29-3] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - Configuring connection. CId=java-test
14:49:46.637 [pulsar-io-29-3] DEBUG io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - The connection has been configured CId=java-test, keepAlive=30, cleanSession=true, idleTime=45
14:49:46.638 [pulsar-io-29-3] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - Sending connect ACK. CId=java-test
14:49:46.638 [pulsar-io-29-3] DEBUG io.streamnative.pulsar.handlers.mqtt.ConnectionDescriptor - Updating state of connection descriptor. MqttClientId = java-test, expectedState = DISCONNECTED, newState = SENDACK.
14:49:46.640 [pulsar-io-29-3] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - The connect ACK has been sent. CId=java-test
14:49:46.640 [pulsar-io-29-3] DEBUG io.streamnative.pulsar.handlers.mqtt.ConnectionDescriptor - Updating state of connection descriptor. MqttClientId = java-test, expectedState = SENDACK, newState = ESTABLISHED.
14:49:46.641 [pulsar-io-29-3] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - The CONNECT message has been processed. CId=java-test, username=null success=true
14:49:46.677 [pulsar-io-29-3] DEBUG io.streamnative.pulsar.handlers.mqtt.MQTTInboundHandler - Processing MQTT Inbound handler message, type=SUBSCRIBE
14:49:46.678 [pulsar-io-29-3] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - [Subscribe] [[id: 0xdd7a195a, L:/<IP_ADDRESS>:1883 - R:/<IP_ADDRESS>:11043]] msg: MqttSubscribeMessage[fixedHeader=MqttFixedHeader[messageType=SUBSCRIBE, isDup=false, qosLevel=AT_LEAST_ONCE, isRetain=false, remainingLength=42], variableHeader=MqttMessageIdAndPropertiesVariableHeader[messageId=1, properties=io.netty.handler.codec.mqtt.MqttProperties@1a9d4859], payload=MqttSubscribePayload[MqttTopicSubscription[topicFilter=persistent://public/default/java-mqtt, option=SubscriptionOption[qos=AT_LEAST_ONCE, noLocal=false, retainAsPublished=false, retainHandling=SEND_AT_SUBSCRIBE]]]]
14:49:46.688 [pulsar-27-1] INFO  org.apache.pulsar.broker.namespace.OwnershipCache - Trying to acquire ownership of public/default/0x80000000_0xc0000000
14:49:46.701 [pulsar-ordered-OrderedExecutor-5-0-EventThread] INFO  org.apache.pulsar.broker.namespace.OwnershipCache - Successfully acquired ownership of /namespace/public/default/0x80000000_0xc0000000
14:49:46.701 [pulsar-ordered-OrderedExecutor-5-0-EventThread] INFO  io.streamnative.pulsar.handlers.amqp.ConnectionContainer - ConnectionContainer [onLoad] namespaceBundle: public/default/0x80000000_0xc0000000, brokerPort: 6650
14:49:46.711 [pulsar-ordered-OrderedExecutor-6-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - Opening managed ledger public/default/persistent/java-mqtt
14:49:46.737 [pulsar-io-29-6] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x8e6e3d11, L:/<IP_ADDRESS>:35090 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.737 [pulsar-io-29-6] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x8e6e3d11, L:/<IP_ADDRESS>:35090 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.739 [bookie-io-1-3] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.739 [bookie-io-1-3] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x2f5ae5ef, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35090]
14:49:46.744 [pulsar-io-29-1] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x9370468b, L:/<IP_ADDRESS>:35092 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.744 [pulsar-io-29-1] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x9370468b, L:/<IP_ADDRESS>:35092 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.745 [metadata-store-32-1] INFO  io.streamnative.pulsar.handlers.kop.KafkaProtocolHandler - get owned topic list when onLoad bundle public/default/0x80000000_0xc0000000, topic size 1
14:49:46.758 [bookie-io-1-1] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.758 [bookie-io-1-1] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0xc57a44a1, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35102]
14:49:46.760 [pulsar-io-29-1] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x4284ac2f, L:/<IP_ADDRESS>:35094 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.760 [pulsar-io-29-1] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x4284ac2f, L:/<IP_ADDRESS>:35094 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.763 [bookie-io-1-5] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.763 [bookie-io-1-5] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0xb6c5ad5f, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35094]
14:49:46.764 [bookie-io-1-6] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.764 [bookie-io-1-6] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x4bc4f487, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35096]
14:49:46.764 [bookie-io-1-4] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.764 [bookie-io-1-7] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.765 [bookie-io-1-4] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x0e3d2585, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35092]
14:49:46.765 [bookie-io-1-7] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x28467294, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35098]
14:49:46.765 [bookie-io-1-8] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.765 [bookie-io-1-8] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0xd41ce7c5, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35100]
14:49:46.767 [pulsar-io-29-8] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x61963c27, L:/<IP_ADDRESS>:35096 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.767 [pulsar-io-29-8] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x61963c27, L:/<IP_ADDRESS>:35096 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.767 [bookie-io-1-3] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.767 [bookie-io-1-3] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x699af936, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35106]
14:49:46.769 [bookie-io-1-2] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.770 [bookie-io-1-2] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x64ce7dad, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35104]
14:49:46.772 [pulsar-io-29-2] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0xfc621744, L:/<IP_ADDRESS>:35106 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.772 [pulsar-io-29-2] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0xfc621744, L:/<IP_ADDRESS>:35106 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.772 [pulsar-io-29-5] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0xf3179d21, L:/<IP_ADDRESS>:35112 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.772 [pulsar-io-29-5] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0xf3179d21, L:/<IP_ADDRESS>:35112 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.773 [pulsar-io-29-7] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x57343bfb, L:/<IP_ADDRESS>:35102 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.773 [pulsar-io-29-7] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x57343bfb, L:/<IP_ADDRESS>:35102 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.774 [pulsar-io-29-8] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x5dc6f9ea, L:/<IP_ADDRESS>:35100 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.774 [bookie-io-1-1] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.774 [pulsar-io-29-8] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x5dc6f9ea, L:/<IP_ADDRESS>:35100 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.774 [bookie-io-1-1] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x333436f2, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35118]
14:49:46.774 [pulsar-io-29-3] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0xd7f474a4, L:/<IP_ADDRESS>:35104 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.774 [pulsar-io-29-3] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0xd7f474a4, L:/<IP_ADDRESS>:35104 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.774 [bookie-io-1-8] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.774 [bookie-io-1-8] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0xf10ca5c4, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35116]
14:49:46.774 [bookie-io-1-7] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.774 [bookie-io-1-5] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.774 [bookie-io-1-6] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.774 [bookie-io-1-5] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0xb44b44f1, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35110]
14:49:46.774 [bookie-io-1-6] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x9ad42c39, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35112]
14:49:46.774 [bookie-io-1-7] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0xd43b8080, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35114]
14:49:46.776 [pulsar-io-29-2] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x0220f6ef, L:/<IP_ADDRESS>:35116 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.775 [pulsar-io-29-6] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x4f978a26, L:/<IP_ADDRESS>:35098 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.776 [pulsar-io-29-2] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x0220f6ef, L:/<IP_ADDRESS>:35116 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.776 [pulsar-io-29-6] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x4f978a26, L:/<IP_ADDRESS>:35098 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.776 [bookie-io-1-4] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.776 [bookie-io-1-4] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0xdcf2b3c5, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35108]
14:49:46.776 [pulsar-io-29-5] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x221f2384, L:/<IP_ADDRESS>:35114 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.776 [pulsar-io-29-5] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x221f2384, L:/<IP_ADDRESS>:35114 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.776 [pulsar-io-29-7] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x688f9ee1, L:/<IP_ADDRESS>:35108 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.776 [pulsar-io-29-7] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x688f9ee1, L:/<IP_ADDRESS>:35108 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.776 [pulsar-io-29-4] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x1dc1a445, L:/<IP_ADDRESS>:35118 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.776 [pulsar-io-29-3] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x161c1f4e, L:/<IP_ADDRESS>:35110 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.776 [bookie-io-1-2] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.776 [pulsar-io-29-3] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x161c1f4e, L:/<IP_ADDRESS>:35110 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.776 [bookie-io-1-2] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0xf1443ab4, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35120]
14:49:46.778 [pulsar-io-29-4] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x1dc1a445, L:/<IP_ADDRESS>:35118 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.780 [pulsar-io-29-4] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x3fbaa8d4, L:/<IP_ADDRESS>:35120 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.780 [pulsar-io-29-4] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x3fbaa8d4, L:/<IP_ADDRESS>:35120 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.801 [BookKeeperClientWorker-OrderedExecutor-0-0] INFO  com.scurrilous.circe.checksum.Crc32cIntChecksum - SSE4.2 CRC32C provider initialized
14:49:46.804 [BookKeeperClientWorker-OrderedExecutor-0-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - [public/default/persistent/java-mqtt] Creating ledger, metadata: {component=[109, 97, 110, 97, 103, 101, 100, 45, 108, 101, 100, 103, 101, 114], pulsar/managed-ledger=[112, 117, 98, 108, 105, 99, 47, 100, 101, 102, 97, 117, 108, 116, 47, 112, 101, 114, 115, 105, 115, 116, 101, 110, 116, 47, 106, 97, 118, 97, 45, 109, 113, 116, 116], application=[112, 117, 108, 115, 97, 114]} - metadata ops timeout : 60 seconds
14:49:46.811 [main-EventThread] INFO  org.apache.bookkeeper.client.LedgerCreateOp - Ensemble: [<IP_ADDRESS>:3181] for ledger: 644
14:49:46.812 [BookKeeperClientWorker-OrderedExecutor-0-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - [public/default/persistent/java-mqtt] Created ledger 644
14:49:46.815 [bookkeeper-ml-scheduler-OrderedScheduler-3-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - [public/default/persistent/java-mqtt] Loading cursor java-test
14:49:46.816 [bookkeeper-ml-scheduler-OrderedScheduler-3-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedCursorImpl - [public/default/persistent/java-mqtt] Recovering from bookkeeper ledger cursor: java-test
14:49:46.816 [bookkeeper-ml-scheduler-OrderedScheduler-3-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedCursorImpl - [public/default/persistent/java-mqtt] Cursor java-test recovered to position 234:-1
14:49:46.818 [bookkeeper-ml-scheduler-OrderedScheduler-3-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - [public/default/persistent/java-mqtt] Recovery for cursor java-test completed. pos=234:-1 -- todo=0
14:49:46.818 [bookkeeper-ml-scheduler-OrderedScheduler-3-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedLedgerFactoryImpl - [public/default/persistent/java-mqtt] Successfully initialize managed ledger
14:49:46.819 [bookkeeper-ml-scheduler-OrderedScheduler-3-0] INFO  org.apache.pulsar.broker.service.AbstractTopic - Disabling publish throttling for persistent://public/default/java-mqtt
14:49:46.819 [bookkeeper-ml-scheduler-OrderedScheduler-3-0] INFO  org.apache.pulsar.broker.service.persistent.PersistentTopic - [persistent://public/default/java-mqtt] There are no replicated subscriptions on the topic
14:49:46.820 [bookkeeper-ml-scheduler-OrderedScheduler-3-0] INFO  org.apache.pulsar.broker.service.BrokerService - Created topic persistent://public/default/java-mqtt - dedup is disabled
14:49:46.825 [bookkeeper-ml-scheduler-OrderedScheduler-3-0] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - Sending SUBACK message MqttSubAckMessage[fixedHeader=MqttFixedHeader[messageType=SUBACK, isDup=false, qosLevel=AT_MOST_ONCE, isRetain=false, remainingLength=0], variableHeader=MqttMessageIdAndPropertiesVariableHeader[messageId=1, properties=io.netty.handler.codec.mqtt.MqttProperties@1a9d4859], payload=MqttSubAckPayload[reasonCodes=[1]]] to java-test
14:49:46.830 [pulsar-io-29-3] DEBUG io.streamnative.pulsar.handlers.mqtt.MQTTInboundHandler - Processing MQTT Inbound handler message, type=PUBLISH
14:49:46.830 [pulsar-io-29-3] DEBUG io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - [Publish] [[id: 0xdd7a195a, L:/<IP_ADDRESS>:1883 - R:/<IP_ADDRESS>:11043]] msg: MqttPublishMessage[fixedHeader=MqttFixedHeader[messageType=PUBLISH, isDup=false, qosLevel=AT_LEAST_ONCE, isRetain=false, remainingLength=51], variableHeader=MqttPublishVariableHeader[topicName=persistent://public/default/java-mqtt, packetId=2], payload=PooledSlicedByteBuf(ridx: 0, widx: 10, cap: 10/10, unwrapped: PooledUnsafeDirectByteBuf(ridx: 53, widx: 53, cap: 8192))]
14:49:46.866 [BookKeeperClientWorker-OrderedExecutor-0-0] DEBUG io.streamnative.pulsar.handlers.mqtt.utils.MessagePublishContext - Success write topic: persistent://public/default/java-mqtt, ledgerId: 644, entryId: 0. triggered send callback.
14:49:46.866 [BookKeeperClientWorker-OrderedExecutor-0-0] DEBUG io.streamnative.pulsar.handlers.mqtt.support.Qos1PublishHandler - [persistent://public/default/java-mqtt] Write MqttPublishMessage[fixedHeader=MqttFixedHeader[messageType=PUBLISH, isDup=false, qosLevel=AT_LEAST_ONCE, isRetain=false, remainingLength=51], variableHeader=MqttPublishVariableHeader[topicName=persistent://public/default/java-mqtt, packetId=2], payload=PooledSlicedByteBuf(ridx: 0, widx: 10, cap: 10/10, unwrapped: PooledUnsafeDirectByteBuf(ridx: 53, widx: 53, cap: 8192))] to Pulsar topic succeed.
14:49:46.866 [BookKeeperClientWorker-OrderedExecutor-0-0] DEBUG io.streamnative.pulsar.handlers.mqtt.support.Qos1PublishHandler - [persistent://public/default/java-mqtt] Send Pub Ack 2 to java-test
14:49:46.866 [BookKeeperClientWorker-OrderedExecutor-0-0] DEBUG io.streamnative.pulsar.handlers.mqtt.ConnectionDescriptorStore - Sending PUBACK message CId=<java-test>, messageId=2
14:49:49.000 [pulsar-web-63-6] INFO  org.eclipse.jetty.server.RequestLog - <IP_ADDRESS> - - [08/Sep/2021:14:49:48 +0800] "GET /admin/v2/persistent/public/functions/coordinate/stats?getPreciseBacklog=false&subscriptionBacklogSize=false HTTP/1.1" 200 1954 "-" "Pulsar-Java-v2.8.0" 7
14:49:49.006 [pulsar-web-63-5] INFO  org.eclipse.jetty.server.RequestLog - <IP_ADDRESS> - - [08/Sep/2021:14:49:49 +0800] "GET /admin/v2/persistent/public/functions/coordinate/stats?getPreciseBacklog=false&subscriptionBacklogSize=false HTTP/1.1" 200 1954 "-" "Pulsar-Java-v2.8.0" 3

I've add
      - name: io.streamnative.pulsar.handlers.mqtt
        level: debug
        additivity: false
        AppenderRef:
          - ref: Console

and reexecute the test.
14:49:46.630 [pulsar-io-29-3] DEBUG io.streamnative.pulsar.handlers.mqtt.MQTTInboundHandler - Processing MQTT Inbound handler message, type=CONNECT
14:49:46.631 [pulsar-io-29-3] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - process CONNECT message. CId=java-test, username=null
14:49:46.632 [pulsar-io-29-3] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - Authentication is disabled, allowing client. CId=java-test, username=null
14:49:46.636 [pulsar-io-29-3] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - Configuring connection. CId=java-test
14:49:46.637 [pulsar-io-29-3] DEBUG io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - The connection has been configured CId=java-test, keepAlive=30, cleanSession=true, idleTime=45
14:49:46.638 [pulsar-io-29-3] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - Sending connect ACK. CId=java-test
14:49:46.638 [pulsar-io-29-3] DEBUG io.streamnative.pulsar.handlers.mqtt.ConnectionDescriptor - Updating state of connection descriptor. MqttClientId = java-test, expectedState = DISCONNECTED, newState = SENDACK.
14:49:46.640 [pulsar-io-29-3] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - The connect ACK has been sent. CId=java-test
14:49:46.640 [pulsar-io-29-3] DEBUG io.streamnative.pulsar.handlers.mqtt.ConnectionDescriptor - Updating state of connection descriptor. MqttClientId = java-test, expectedState = SENDACK, newState = ESTABLISHED.
14:49:46.641 [pulsar-io-29-3] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - The CONNECT message has been processed. CId=java-test, username=null success=true
14:49:46.677 [pulsar-io-29-3] DEBUG io.streamnative.pulsar.handlers.mqtt.MQTTInboundHandler - Processing MQTT Inbound handler message, type=SUBSCRIBE
14:49:46.678 [pulsar-io-29-3] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - [Subscribe] [[id: 0xdd7a195a, L:/<IP_ADDRESS>:1883 - R:/<IP_ADDRESS>:11043]] msg: MqttSubscribeMessage[fixedHeader=MqttFixedHeader[messageType=SUBSCRIBE, isDup=false, qosLevel=AT_LEAST_ONCE, isRetain=false, remainingLength=42], variableHeader=MqttMessageIdAndPropertiesVariableHeader[messageId=1, properties=io.netty.handler.codec.mqtt.MqttProperties@1a9d4859], payload=MqttSubscribePayload[MqttTopicSubscription[topicFilter=persistent://public/default/java-mqtt, option=SubscriptionOption[qos=AT_LEAST_ONCE, noLocal=false, retainAsPublished=false, retainHandling=SEND_AT_SUBSCRIBE]]]]
14:49:46.688 [pulsar-27-1] INFO  org.apache.pulsar.broker.namespace.OwnershipCache - Trying to acquire ownership of public/default/0x80000000_0xc0000000
14:49:46.701 [pulsar-ordered-OrderedExecutor-5-0-EventThread] INFO  org.apache.pulsar.broker.namespace.OwnershipCache - Successfully acquired ownership of /namespace/public/default/0x80000000_0xc0000000
14:49:46.701 [pulsar-ordered-OrderedExecutor-5-0-EventThread] INFO  io.streamnative.pulsar.handlers.amqp.ConnectionContainer - ConnectionContainer [onLoad] namespaceBundle: public/default/0x80000000_0xc0000000, brokerPort: 6650
14:49:46.711 [pulsar-ordered-OrderedExecutor-6-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - Opening managed ledger public/default/persistent/java-mqtt
14:49:46.737 [pulsar-io-29-6] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x8e6e3d11, L:/<IP_ADDRESS>:35090 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.737 [pulsar-io-29-6] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x8e6e3d11, L:/<IP_ADDRESS>:35090 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.739 [bookie-io-1-3] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.739 [bookie-io-1-3] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x2f5ae5ef, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35090]
14:49:46.744 [pulsar-io-29-1] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x9370468b, L:/<IP_ADDRESS>:35092 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.744 [pulsar-io-29-1] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x9370468b, L:/<IP_ADDRESS>:35092 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.745 [metadata-store-32-1] INFO  io.streamnative.pulsar.handlers.kop.KafkaProtocolHandler - get owned topic list when onLoad bundle public/default/0x80000000_0xc0000000, topic size 1
14:49:46.758 [bookie-io-1-1] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.758 [bookie-io-1-1] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0xc57a44a1, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35102]
14:49:46.760 [pulsar-io-29-1] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x4284ac2f, L:/<IP_ADDRESS>:35094 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.760 [pulsar-io-29-1] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x4284ac2f, L:/<IP_ADDRESS>:35094 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.763 [bookie-io-1-5] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.763 [bookie-io-1-5] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0xb6c5ad5f, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35094]
14:49:46.764 [bookie-io-1-6] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.764 [bookie-io-1-6] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x4bc4f487, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35096]
14:49:46.764 [bookie-io-1-4] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.764 [bookie-io-1-7] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.765 [bookie-io-1-4] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x0e3d2585, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35092]
14:49:46.765 [bookie-io-1-7] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x28467294, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35098]
14:49:46.765 [bookie-io-1-8] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.765 [bookie-io-1-8] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0xd41ce7c5, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35100]
14:49:46.767 [pulsar-io-29-8] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x61963c27, L:/<IP_ADDRESS>:35096 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.767 [pulsar-io-29-8] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x61963c27, L:/<IP_ADDRESS>:35096 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.767 [bookie-io-1-3] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.767 [bookie-io-1-3] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x699af936, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35106]
14:49:46.769 [bookie-io-1-2] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.770 [bookie-io-1-2] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x64ce7dad, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35104]
14:49:46.772 [pulsar-io-29-2] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0xfc621744, L:/<IP_ADDRESS>:35106 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.772 [pulsar-io-29-2] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0xfc621744, L:/<IP_ADDRESS>:35106 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.772 [pulsar-io-29-5] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0xf3179d21, L:/<IP_ADDRESS>:35112 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.772 [pulsar-io-29-5] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0xf3179d21, L:/<IP_ADDRESS>:35112 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.773 [pulsar-io-29-7] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x57343bfb, L:/<IP_ADDRESS>:35102 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.773 [pulsar-io-29-7] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x57343bfb, L:/<IP_ADDRESS>:35102 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.774 [pulsar-io-29-8] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x5dc6f9ea, L:/<IP_ADDRESS>:35100 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.774 [bookie-io-1-1] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.774 [pulsar-io-29-8] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x5dc6f9ea, L:/<IP_ADDRESS>:35100 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.774 [bookie-io-1-1] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x333436f2, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35118]
14:49:46.774 [pulsar-io-29-3] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0xd7f474a4, L:/<IP_ADDRESS>:35104 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.774 [pulsar-io-29-3] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0xd7f474a4, L:/<IP_ADDRESS>:35104 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.774 [bookie-io-1-8] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.774 [bookie-io-1-8] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0xf10ca5c4, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35116]
14:49:46.774 [bookie-io-1-7] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.774 [bookie-io-1-5] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.774 [bookie-io-1-6] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.774 [bookie-io-1-5] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0xb44b44f1, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35110]
14:49:46.774 [bookie-io-1-6] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0x9ad42c39, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35112]
14:49:46.774 [bookie-io-1-7] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0xd43b8080, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35114]
14:49:46.776 [pulsar-io-29-2] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x0220f6ef, L:/<IP_ADDRESS>:35116 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.775 [pulsar-io-29-6] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x4f978a26, L:/<IP_ADDRESS>:35098 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.776 [pulsar-io-29-2] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x0220f6ef, L:/<IP_ADDRESS>:35116 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.776 [pulsar-io-29-6] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x4f978a26, L:/<IP_ADDRESS>:35098 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.776 [bookie-io-1-4] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.776 [bookie-io-1-4] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0xdcf2b3c5, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35108]
14:49:46.776 [pulsar-io-29-5] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x221f2384, L:/<IP_ADDRESS>:35114 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.776 [pulsar-io-29-5] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x221f2384, L:/<IP_ADDRESS>:35114 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.776 [pulsar-io-29-7] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x688f9ee1, L:/<IP_ADDRESS>:35108 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.776 [pulsar-io-29-7] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x688f9ee1, L:/<IP_ADDRESS>:35108 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.776 [pulsar-io-29-4] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x1dc1a445, L:/<IP_ADDRESS>:35118 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.776 [pulsar-io-29-3] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x161c1f4e, L:/<IP_ADDRESS>:35110 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.776 [bookie-io-1-2] INFO  org.apache.bookkeeper.proto.AuthHandler - Authentication success on server side
14:49:46.776 [pulsar-io-29-3] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x161c1f4e, L:/<IP_ADDRESS>:35110 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.776 [bookie-io-1-2] INFO  org.apache.bookkeeper.proto.BookieRequestHandler - Channel connected  [id: 0xf1443ab4, L:/<IP_ADDRESS>:3181 - R:/<IP_ADDRESS>:35120]
14:49:46.778 [pulsar-io-29-4] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x1dc1a445, L:/<IP_ADDRESS>:35118 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.780 [pulsar-io-29-4] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - Successfully connected to bookie: <IP_ADDRESS>:3181 [id: 0x3fbaa8d4, L:/<IP_ADDRESS>:35120 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181]
14:49:46.780 [pulsar-io-29-4] INFO  org.apache.bookkeeper.proto.PerChannelBookieClient - connection [id: 0x3fbaa8d4, L:/<IP_ADDRESS>:35120 - R:<IP_ADDRESS>/<IP_ADDRESS>:3181] authenticated as BookKeeperPrincipal{ANONYMOUS}
14:49:46.801 [BookKeeperClientWorker-OrderedExecutor-0-0] INFO  com.scurrilous.circe.checksum.Crc32cIntChecksum - SSE4.2 CRC32C provider initialized
14:49:46.804 [BookKeeperClientWorker-OrderedExecutor-0-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - [public/default/persistent/java-mqtt] Creating ledger, metadata: {component=[109, 97, 110, 97, 103, 101, 100, 45, 108, 101, 100, 103, 101, 114], pulsar/managed-ledger=[112, 117, 98, 108, 105, 99, 47, 100, 101, 102, 97, 117, 108, 116, 47, 112, 101, 114, 115, 105, 115, 116, 101, 110, 116, 47, 106, 97, 118, 97, 45, 109, 113, 116, 116], application=[112, 117, 108, 115, 97, 114]} - metadata ops timeout : 60 seconds
14:49:46.811 [main-EventThread] INFO  org.apache.bookkeeper.client.LedgerCreateOp - Ensemble: [<IP_ADDRESS>:3181] for ledger: 644
14:49:46.812 [BookKeeperClientWorker-OrderedExecutor-0-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - [public/default/persistent/java-mqtt] Created ledger 644
14:49:46.815 [bookkeeper-ml-scheduler-OrderedScheduler-3-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - [public/default/persistent/java-mqtt] Loading cursor java-test
14:49:46.816 [bookkeeper-ml-scheduler-OrderedScheduler-3-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedCursorImpl - [public/default/persistent/java-mqtt] Recovering from bookkeeper ledger cursor: java-test
14:49:46.816 [bookkeeper-ml-scheduler-OrderedScheduler-3-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedCursorImpl - [public/default/persistent/java-mqtt] Cursor java-test recovered to position 234:-1
14:49:46.818 [bookkeeper-ml-scheduler-OrderedScheduler-3-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl - [public/default/persistent/java-mqtt] Recovery for cursor java-test completed. pos=234:-1 -- todo=0
14:49:46.818 [bookkeeper-ml-scheduler-OrderedScheduler-3-0] INFO  org.apache.bookkeeper.mledger.impl.ManagedLedgerFactoryImpl - [public/default/persistent/java-mqtt] Successfully initialize managed ledger
14:49:46.819 [bookkeeper-ml-scheduler-OrderedScheduler-3-0] INFO  org.apache.pulsar.broker.service.AbstractTopic - Disabling publish throttling for persistent://public/default/java-mqtt
14:49:46.819 [bookkeeper-ml-scheduler-OrderedScheduler-3-0] INFO  org.apache.pulsar.broker.service.persistent.PersistentTopic - [persistent://public/default/java-mqtt] There are no replicated subscriptions on the topic
14:49:46.820 [bookkeeper-ml-scheduler-OrderedScheduler-3-0] INFO  org.apache.pulsar.broker.service.BrokerService - Created topic persistent://public/default/java-mqtt - dedup is disabled
14:49:46.825 [bookkeeper-ml-scheduler-OrderedScheduler-3-0] INFO  io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - Sending SUBACK message MqttSubAckMessage[fixedHeader=MqttFixedHeader[messageType=SUBACK, isDup=false, qosLevel=AT_MOST_ONCE, isRetain=false, remainingLength=0], variableHeader=MqttMessageIdAndPropertiesVariableHeader[messageId=1, properties=io.netty.handler.codec.mqtt.MqttProperties@1a9d4859], payload=MqttSubAckPayload[reasonCodes=[1]]] to java-test
14:49:46.830 [pulsar-io-29-3] DEBUG io.streamnative.pulsar.handlers.mqtt.MQTTInboundHandler - Processing MQTT Inbound handler message, type=PUBLISH
14:49:46.830 [pulsar-io-29-3] DEBUG io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - [Publish] [[id: 0xdd7a195a, L:/<IP_ADDRESS>:1883 - R:/<IP_ADDRESS>:11043]] msg: MqttPublishMessage[fixedHeader=MqttFixedHeader[messageType=PUBLISH, isDup=false, qosLevel=AT_LEAST_ONCE, isRetain=false, remainingLength=51], variableHeader=MqttPublishVariableHeader[topicName=persistent://public/default/java-mqtt, packetId=2], payload=PooledSlicedByteBuf(ridx: 0, widx: 10, cap: 10/10, unwrapped: PooledUnsafeDirectByteBuf(ridx: 53, widx: 53, cap: 8192))]
14:49:46.866 [BookKeeperClientWorker-OrderedExecutor-0-0] DEBUG io.streamnative.pulsar.handlers.mqtt.utils.MessagePublishContext - Success write topic: persistent://public/default/java-mqtt, ledgerId: 644, entryId: 0. triggered send callback.
14:49:46.866 [BookKeeperClientWorker-OrderedExecutor-0-0] DEBUG io.streamnative.pulsar.handlers.mqtt.support.Qos1PublishHandler - [persistent://public/default/java-mqtt] Write MqttPublishMessage[fixedHeader=MqttFixedHeader[messageType=PUBLISH, isDup=false, qosLevel=AT_LEAST_ONCE, isRetain=false, remainingLength=51], variableHeader=MqttPublishVariableHeader[topicName=persistent://public/default/java-mqtt, packetId=2], payload=PooledSlicedByteBuf(ridx: 0, widx: 10, cap: 10/10, unwrapped: PooledUnsafeDirectByteBuf(ridx: 53, widx: 53, cap: 8192))] to Pulsar topic succeed.
14:49:46.866 [BookKeeperClientWorker-OrderedExecutor-0-0] DEBUG io.streamnative.pulsar.handlers.mqtt.support.Qos1PublishHandler - [persistent://public/default/java-mqtt] Send Pub Ack 2 to java-test
14:49:46.866 [BookKeeperClientWorker-OrderedExecutor-0-0] DEBUG io.streamnative.pulsar.handlers.mqtt.ConnectionDescriptorStore - Sending PUBACK message CId=<java-test>, messageId=2
14:49:49.000 [pulsar-web-63-6] INFO  org.eclipse.jetty.server.RequestLog - <IP_ADDRESS> - - [08/Sep/2021:14:49:48 +0800] "GET /admin/v2/persistent/public/functions/coordinate/stats?getPreciseBacklog=false&subscriptionBacklogSize=false HTTP/1.1" 200 1954 "-" "Pulsar-Java-v2.8.0" 7
14:49:49.006 [pulsar-web-63-5] INFO  org.eclipse.jetty.server.RequestLog - <IP_ADDRESS> - - [08/Sep/2021:14:49:49 +0800] "GET /admin/v2/persistent/public/functions/coordinate/stats?getPreciseBacklog=false&subscriptionBacklogSize=false HTTP/1.1" 200 1954 "-" "Pulsar-Java-v2.8.0" 3

The last four lines show the messages have been published.

The log shows that everything goes well.

@Technoboy-
Yes, the message publish succeeded, so I can receive the message by pulsar consumer.
But the mqtt consumer cannot receive the message. It would stay backlog.
I'm curious about the subscription type. Is 'None' correct when using mop?
What is the default subscrption type in mop?

@Technoboy-
Yes, the message publish succeeded, so I can receive the message by pulsar consumer.
But the mqtt consumer cannot receive the message. It would stay backlog.
I'm curious about the subscription type. Is 'None' correct when using mop?
What is the default subscrption type in mop?

Did you open the pulsar consumer with mqtt consumer at the same time ?

The default subscription mode is Share. The message may be received by pulsar consumer, and let the mqtt consumer blocking.

@Technoboy-
Yes, the message publish succeeded, so I can receive the message by pulsar consumer.
But the mqtt consumer cannot receive the message. It would stay backlog.
I'm curious about the subscription type. Is 'None' correct when using mop?
What is the default subscrption type in mop?

Did you open the pulsar consumer with mqtt consumer at the same time ?

No, just the mqtt consumer. I've tried to use both but I thought the message might be sent to the pulsar consumer only so I turned it off. There's only one subscription in this topic.

But no consumers are shown.

Could you have a try the newest version of mop ?
You can clone the repo to your local and build a nar.

Could you have a try the newest version of mop ?
You can clone the repo to your local and build a nar.

I do build the nar locally.
I just tried building a new one but it was the same.
I'm using the master branch.

Could you have a try the newest version of mop ?
You can clone the repo to your local and build a nar.

I do build the nar locally.
I just tried building a new one but it was the same.
I'm using the master branch.

It's really a bad news. Could you send me an email for further communication?

Have you found the cause of this problem
@yasu1209

Have you found the cause of this problem
@yasu1209

I've tried again today but still cannot figure it out.

@Technoboy-
I tried downgrading pulsar to 2.6.1 and 2.7.3 and ran the test code.
It turned out
09:10:31.496 [pulsar-io-50-8] ERROR io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl - [java-test] Failed to process MQTT subscribe.
java.util.concurrent.CompletionException: java.lang.NoClassDefFoundError: org/apache/pulsar/common/api/proto/CommandSubscribe$InitialPosition
        at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273) ~[?:1.8.0_282]
        at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280) ~[?:1.8.0_282]
        at java.util.concurrent.CompletableFuture.uniAccept(CompletableFuture.java:673) ~[?:1.8.0_282]
        at java.util.concurrent.CompletableFuture.uniAcceptStage(CompletableFuture.java:683) ~[?:1.8.0_282]
        at java.util.concurrent.CompletableFuture.thenAccept(CompletableFuture.java:2010) [?:1.8.0_282]
        at io.streamnative.pulsar.handlers.mqtt.utils.PulsarTopicUtils.getOrCreateSubscription(PulsarTopicUtils.java:71) ~[?:?]
        at io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl.lambda$processSubscribe$1(DefaultProtocolMethodProcessorImpl.java:317) ~[?:?]
        at java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:995) [?:1.8.0_282]
        at java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2137) [?:1.8.0_282]
        at io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl.processSubscribe(DefaultProtocolMethodProcessorImpl.java:313) [pulsar-protocol-handler-mqtt-2.9.0-SNAPSHOT.nar-unpacked/:?]
        at io.streamnative.pulsar.handlers.mqtt.MQTTInboundHandler.channelRead(MQTTInboundHandler.java:63) [pulsar-protocol-handler-mqtt-2.9.0-SNAPSHOT.nar-unpacked/:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [io.netty-netty-transport-4.1.60.Final.jar:4.1.60.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [io.netty-netty-transport-4.1.60.Final.jar:4.1.60.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [io.netty-netty-transport-4.1.60.Final.jar:4.1.60.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) [io.netty-netty-codec-4.1.60.Final.jar:4.1.60.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296) [io.netty-netty-codec-4.1.60.Final.jar:4.1.60.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [io.netty-netty-transport-4.1.60.Final.jar:4.1.60.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [io.netty-netty-transport-4.1.60.Final.jar:4.1.60.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [io.netty-netty-transport-4.1.60.Final.jar:4.1.60.Final]
        at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) [io.netty-netty-handler-4.1.60.Final.jar:4.1.60.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [io.netty-netty-transport-4.1.60.Final.jar:4.1.60.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [io.netty-netty-transport-4.1.60.Final.jar:4.1.60.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [io.netty-netty-transport-4.1.60.Final.jar:4.1.60.Final]
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) [io.netty-netty-transport-4.1.60.Final.jar:4.1.60.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [io.netty-netty-transport-4.1.60.Final.jar:4.1.60.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [io.netty-netty-transport-4.1.60.Final.jar:4.1.60.Final]
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) [io.netty-netty-transport-4.1.60.Final.jar:4.1.60.Final]
        at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:795) [io.netty-netty-transport-native-epoll-4.1.60.Final.jar:4.1.60.Final]
        at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:480) [io.netty-netty-transport-native-epoll-4.1.60.Final.jar:4.1.60.Final]
        at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) [io.netty-netty-transport-native-epoll-4.1.60.Final.jar:4.1.60.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) [io.netty-netty-common-4.1.60.Final.jar:4.1.60.Final]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [io.netty-netty-common-4.1.60.Final.jar:4.1.60.Final]
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [io.netty-netty-common-4.1.60.Final.jar:4.1.60.Final]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_282]
Caused by: java.lang.NoClassDefFoundError: org/apache/pulsar/common/api/proto/CommandSubscribe$InitialPosition
        at io.streamnative.pulsar.handlers.mqtt.utils.PulsarTopicUtils.lambda$getOrCreateSubscription$3(PulsarTopicUtils.java:78) ~[?:?]
        at java.util.concurrent.CompletableFuture.uniAccept(CompletableFuture.java:670) ~[?:1.8.0_282]

which version should I use to map old version pulsar?

@Technoboy-
I switched to v2.7.1 and rebuilt the nar file.
But the nar file is bigger than 2.9.0.
-rw-r--r-- 1 root root 137601899 Sep 10 09:18 pulsar-protocol-handler-mqtt-<IP_ADDRESS>-rc-202104301334.nar
-rw-r--r-- 1 root root   5243733 Sep 10 09:05 pulsar-protocol-handler-mqtt-2.9.0-SNAPSHOT.nar

@Technoboy- @fanyouyong0526
I switched to v2.7.1 and rebuilt the nar file.
But the nar file is bigger than 2.9.0.
-rw-r--r-- 1 root root 137601899 Sep 10 09:18 pulsar-protocol-handler-mqtt-<IP_ADDRESS>-rc-202104301334.nar
-rw-r--r-- 1 root root   5243733 Sep 10 09:05 pulsar-protocol-handler-mqtt-2.9.0-SNAPSHOT.nar

And pulsar 2.7.3 + mop <IP_ADDRESS>-rc succeeded.......
So I built the nar file wrong? 100M+ nar file is necessary?

BTW, can you run the test case of the latest repo successfully in your local ?

@Technoboy- @fanyouyong0526
I switched to v2.7.1 and rebuilt the nar file.
But the nar file is bigger than 2.9.0.
-rw-r--r-- 1 root root 137601899 Sep 10 09:18 pulsar-protocol-handler-mqtt-<IP_ADDRESS>-rc-202104301334.nar
-rw-r--r-- 1 root root   5243733 Sep 10 09:05 pulsar-protocol-handler-mqtt-2.9.0-SNAPSHOT.nar

And pulsar 2.7.3 + mop <IP_ADDRESS>-rc succeeded.......
So I built the nar file wrong? 100M+ nar file is necessary?

BTW, can you run the test case of the latest repo successfully in your local ?

I ran mvnw clean install on the last commit of master branch and all tests seem cleared.

I encountered the same problem! pulsar-2.8.0 + mop

I encountered the same problem!
env:
local run pulsar-2.8.0 standalone
mop version <IP_ADDRESS>, 2.9.0, <IP_ADDRESS>, all encountered the same problem.

Only the following versions are available:
pulsar-2.7.3 + mop-<IP_ADDRESS> succeeded!


Use inline instead of embed for edu-sharing snippets

Hi @kulla ,
I changed the displayMode to "inline", because this is the same mode we use for all other integrations (i.e. moodle, wordpress...) in order to have a more consistent view. The "embed" mode previously used is not recommended for integrations into courses or editors.

Thx! :heart:

@torsten-simon This is released in 2.1.4, see https://github.com/serlo/serlo-editor-for-edusharing/releases/tag/v2.1.4


[lifecycle] added lifecycle functionality

Pull Request Test Coverage Report for Build 403

8 of 8 (100.0%) changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build 399:
0.0%

Covered Lines:
448

Relevant Lines:
448

💛  - Coveralls


Create an opt-in opinionated css script

See discussion https://github.com/AgnosticUI/agnosticui/discussions/122

First stab should be at agnostic-css/public/css-dist/opinions.min.css
https://github.com/AgnosticUI/agnosticui/pull/124

I like the name but it's a bit cowardly not putting your name in there 😜


x/mobile/cmd/gomobile: multiple packages binding

I need to gobind multiple packages for an app.
I considered running gomobile for each package and import multiple .so files, but that will fail due to various reasons:

gobind framework for java assumes a single 'gojni.so' file
duplicate code for go runtime in multiple .so files; conflicting symbols, storage, ...

Option 1:

gomobile bind -target=android -o=myapp.aar pkg1 pkg2 pkg3

The command will generate separate java classes for those packages, and gather all asset files under one asset directory. Conflicting package names and asset file names are error.

Problem of proposal 1
I was about to implement fix for #9660 and I don't know how it works with multiple packages.

Option 1.a

gomobile bind -target=android -o=myapp.aar -pkg=com.example.foo,org.example.bar,net.example.baz pkg pkg2 pkg3

Option 1.b

gomobile bind -target=android -o=myapp.aar pkg1:com.example.foo pkg2:org.example.bar pkg3 ...

Option 2:

gomobile bind -target=android -o=myapp.aar -list=something.json

Make gomobile take an input file of a certain format that lists all packages for gobind.

   /* something.json */
   {
        Name: "pkg1",
        Android: "com.example.foo",
        IOS: "MyFoo"
   }

Option 3:
Fake main package file - so when gomobile bind sees the 'main' package, it runs gobind on all the imported packages, and process the command that specifies the custom package name for java and prefix for obj-c.

gomobile bind -target=android -o myapp.aar myapp.go

   /* myapp.go */
   package main
   import (
          _ "pkg1"  // android:com.example.foo ios:MyFoo
          ...
   )
   func main() {
   }

/cc @crawshaw @rakyll

There are two distinct problems in the scope of this issue. Although they are relatively connected, we need to address them individually.
Problems:

Name congestions among multiple packages.
Being able to name Java packages, using custom prefixes for headers on iOS.

The solution to the first problem is relatively easy. If there are name congestions, reject to generate bindings or name the packages.
An example:
 $ gomobile bind -target=android a/sensor b/sensor

It may generate two classes ASensor.java and BSensor.java. We can simply prefix the class name in the most minimal way it will be distinguishable from the other package. Given the fact that, Go import path is unique within the GOPATH, we will eventually find a unique name.
If the user is not happy with the auto-assigned names, they should be able to override the namespace themselves.
I don't have a strong preference how we should represent the mapping but the information shouldn't be sitting in a separate file. Would you like to carry the discussion to golang-dev@ to ask feedback from a wider audience?

I will not worry too much about the collision in the package names at this moment.  So, for two sensor packages, the user can name one in sensorA, and another in sensorB. For binding 3rd party packages, the user can wrap them with more meaningful names.
I think what I will end up implementing is

  $ gomobile bind -target=android -pkgpath=com.golang.app a.b.c x.y.z

This will creates two classes C.java and Z.java under the same package com.golang.app. All classes will be under the same package path (com.golang.app). If pkgpath is not given, go.c.C and go.z.Z.
For objective-c,

  $ gomobile bind -target=ios -prefix=App a.b.c x.y.z

This will create AppC.{h,m} and AppZ.{h.m}, and AppC and AppZ will be used as prefixes of generated functions and types. If -prefix is omitted, GoC and GoZ.

SGTM

For binding 3rd party packages, the user can wrap them with more meaningful names

Please reconsider this decision. One of the strengths with the Go ecosystem is that it is incredibly easy to share code. If I build a useful library and every developer will now have to manually write a wrapper the barrier to adoption is significantly higher.  For example, I would love to just be able to go get a library to handle networking (checking network type WiFi/3G/etc) or location and just have it work. Having to now write a bunch of code to essentially re-implement the API imposes an unnecessary burden.
All of these problems are very easily solved if you just provide a separate command in gomobile to build. Then I can do the following easily:
$ gobind pkg1
$ gobind pkg2
$ gobind pkg3

Now manually create my main
package main

import (
    _ "pkg1"
    _ "pkg2"
    _ "pkg3"

)
func main() {
panic("Does nothing!")
}
And build
$ gomobile build -target=ios -buildmode=objc-framework

This is consistent with how the go tool works and makes sharing code very easy.

@sridharv Can you explain what the gobind does? Currently it does only code generation (.java, .h, .m, .go) but your mention of incremental builds makes me think the gobind in your proposal does something more than that.

what's the output of the gobind? (source code? compiled object or class files? archive?)

where should the gobind output go (so, the following gomobile build command finds the output of previous gobind commands and IDEs build task)? Every IDE has different assumptions on source code layout, or default build framework.

Use of buildmode flag in gomobile build is interesting, and I want to hear more about how it connects the main package and the product of previous gobind+IDE runs.
Besides, I want to know how to handle the case when exported functions of pkg1 and pkg2 both depend on some types of pkg3.
package pkg1
func Read(io.Reader)
package pkg2
func Work(io.Reader)
Our plan was to export only one type for io.Reader in this case, so both Read and Work use the same type.
I don't understand what prevents the use of go generate currently.

Firstly, thank you for responding so quickly. Secondly, I should apologize for saying the problem is "very easily solved". It definitely comes off as glib, which I didn't realize when writing it. In addition I don't think I explained some of the usage scenarios I had in mind properly. Now onto your questions.

Besides, I want to know how to handle the case when exported functions of pkg1 and pkg2 both depend on some types of pkg3.

That's a very good point. What I described earlier doesn't address this properly since there is room for user error when running gobind manually for each package, which is never a good thing. Having said that, a single step for code generation makes the "separate bind and build" irrelevant for this specific issue. Now that I think about it, I was primarily motivated by some other problems I am currently facing with having the code gen and build be part of one step. I'll answer your questions regarding that in a separate comment and create a separate issue for the questions I have.
Proposal
There are two parts to this. One addresses the problem of manually wrapping libraries and the other, sharing cross platform code.
Binding multiple libraries in the face of package conflicts
Create a main file as you suggested in Option 3. Instead of adding comments per package just list all the packages. For packages that have name collisions use the standard Go mechanism of resolving name collisions.
package main

import (
	_ "pkg1"
    otherpkg1 "some/other/pkg1"
    _ "pkg2"
)

// Avoid the unused import warning
var _ = otherpkg1.SomeFunction

func main() {
	panic("placebo main")
}

Now run gomobile bind as you decided on earlier, but instead of listing all packages just point to this main package.
Java:
$ gomobile bind -target=android -pkgpath=com.golang.app path.to.main.package

Objective-C:
$ gomobile bind -target=ios -prefix=App path.to.main.package

This makes it consistent with how go resolves the same package namespace collision issue and keeps things simple as with your earlier decision. Things can be made even simpler if you disallow having any other exported members in the main package so you don't have to worry about how to bind those.
Sharing libraries with supporting Java or ObjC code
This is a separate issue, but it is affected by the choice of prefix/package path.
Consider the following scenario. I am writing an SDK app with go code shared between iOS and Android. I want to do the following in my shared go code:

Know which directory to store my database files in.
Know whether the network is on WiFi or 3G so I can decide whether or not to download a file.
Run a download in the background.

All the above have standardized solutions in Android and iOS respectively. If I wanted a common interface to the above I could write a go library that accepts an interface and have Java/ObjC implement that interface. The go code then calls that interface to get the directory, network state, etc. This is the kind of code that can easily live in a third party library and make development easy for everyone. However, in order to do this, the library author needs to know what Java interface / ObjC protocol to implement in their Java / ObjC supporting code.
One solution is to allow package authors to specify their own Java/ObjCpackage prefix.
//Package network implements cross-platform support for network state on iOS and Android
package network // java:com.foo.network ios:GoNet

Packages that force a prefix are disallowed from having third party package references in their exported code. This ensures that the problem you described does not occur.
Now I can do the following:
$ go get gomobile/support # (or something similar)

And write go code like so:
import (
    "gomobile/support/network"
    "gomobile/support/storage"
)

func DoSomething() {
	switch network.Type() {
    case network.WiFi:
    // do something
    }
}

func DoSomethingElse() {
	// ... compute url
    location := filepath.Join(storage.UserDataDir(), "somefile")
    network.DownloadInBackground(url, location)
}

The network and storage packages would handle their platform specific code by using their SDK provided Java/ObjC code.
Distributing the supporting code
For this, one way would be to ask library authors to use the native code distribution options for their language. They would use Maven for Java and Cocoapods/Carthage for iOS. They just have to be careful not to package the generated binding code. Another would be allow them to place these files in a directory in their go tree. These files are then automatically copied by gomobile bind when it is generating the bindings for these packages. This makes things easier since a user of the library would just go get a library and be able to use it without having to worry about the right version of the supporting native code.
The gobind tool could follow the convention that any files found in a directory named java under a go package are copied to the generated java package. For ObjC a directory named objc is treated similarly. It would be simpler to have the Java and ObjC files live in the same directory as the go package, but this causes problems when building for android since the go tool complains about ObjC files being present without cgo being used.
I'll put together a small prototype describing the above scenarios so it is clearer.

I'm placing my answers to your questions about code gen + build here.

what's the output of the gobind? (source code? compiled object or class files? archive?)

The outputs are still source files.

where should the gobind output go (so, the following gomobile build command finds the output of previous gobind commands and IDEs build task)? Every IDE has different assumptions on source code layout, or default build framework.

This is an important question and one I didn't address in my comment. I don't think IDEs need to automatically know about the location of the source. The only thing that needs to know is the gomobile tool so that it can pick up these files for the build step. This can be achieved with a command line flag.

Use of buildmode flag in gomobile build is interesting, and I want to hear more about how it connects the main package and the product of previous gobind+IDE runs

It can pick up the location of the files using a command line flag. The IDE will will pick the output of gomobile build in the same way it picks up the output of gomobile bind. The IDE can run gomobile build automatically (XCode Run Script Phase/Gradle plugin) whenever it builds the SDK app. However, the more I think about it this can be done in gomobile bind as well.

I don't understand what prevents the use of go generate currently.

Nothing whatsoever :). However, my understanding is that go generate is intended to be used for pre-build steps such as code generation. Library authors can then commit generated source to their library source tree. It feels like a misuse of go generate to use it to generate a .framework or .aar. Those operations feel like they should be done by go build/gomobile build/Makefile/build.gradle.

I put together a prototype for reading the list of packages from a main file and specifying a package name override. It only works for gobind and is not fully tested right now. Depending on my time constraints I'll port it to gomobile and finish testing tomorrow.
https://github.com/sridharv/mobile/commit/710bb3c541a0c40ba524eb10c97d419dd9a00891

I currently need this feature for some work I'm doing. I'm happy to implement what was decided earlier on Aug 27 if you haven't had the time to look at it yet. Please let me know if this will be useful to you.

I had time on Sunday and ended up implementing this for my personal use (using some of the earlier prototype code I'd written). The change is on the following branch: https://github.com/sridharv/mobile/tree/multibind2
The current status:

Tested and working on Android.
Referring to exported types from another package supported.
Common generation code for gobind and gomobile bind.
Custom prefixes/package paths not tested.
Unit tests present for ObjC but not tested in an actual app.

If this will be useful I'll write up the approach I took, test for iOS and send the CL for review. I'm happy to make any changes needed. If it's not useful I'll use it for my work now and cut over to the official version when it lands :)

@sridharv Thanks for working on this, and sorry for not responding quickly.
I am unfortunately lost where the discussion went; too many things are going on in this issue. Let's limit this issue to be what's mentioned in the title. Multiple package support.
By 'what's decided earlier on Aug 27', do you mean my posting on Aug 26? Then, yes, feel free to send a CL for that. I expect the first one should be just changing the current gomobile to support multiple packages. gobind already supports binding of multiple packages. The types should be limited to each package.
For supporting types from other packages, there is a separate issue (https://github.com/golang/go/issues/12570) so update that one.
@crawshaw is now changing the way to extract exported types, so please wait for us to finish https://go-review.googlesource.com/#/c/16913/  and sync.
For other stuff you mentioned in your proposals -

Binding multiple libraries in the face of package conflicts: let's get back to this when we find the value of this approach compared to what you will implement for now.

Sharing libraries with supporting Java or ObjC code: I don't think I fully understand this. But let's discuss this in the golang-nuts forum, not in this issue. (please cc @crawshaw and @hyangah)

Thanks!

@hyangah Thanks for the quick response!
I'll split this into two CLs. One for what you decided on Aug 26 (it shows up at 27 in my timezone) and another for the external types portion. Given how I've implemented this change it might be worth it to wait for https://go-review.googlesource.com/#/c/16913/ for both changes, but I'll defer that decision to the review. Expect this in 2-3 days time (the week has started so I'm restricted to the evenings for this).
For the other stuff, I'll send an email to golang-nuts for (2) and we can revisit (1) later as you suggested.

I will send the 2nd CL (iOS) late this week and the 3rd CL (Documentation) next week. I had hoped to do this last week, but had time constraints.

I believe this has been working for quite a while now.


Formula is not working after paste and drag event

Once you paste from excel file to the jexcel control, SUM formula is not working. After paste, if you change any cell value manually then formula is working fine. Same thing for select and drag event.
for paste event i did a workaround but there is no event for drag;
function onpaste(el,records){
				// get unique rows
				const uniqueArr = [... new Set(records.map(data => data.row))]
				for (let index = 0; index < uniqueArr.length; index++) {
					const element = uniqueArr[index];
					for (let index_form = 0; index_form < line.cols.length; index_form++) {
						const element_form = line.cols[index_form];
						if (element_form.COLFORMULA != '')
						{
							var result = line.instance.jexcel.executeFormula(line.instance.jexcel.getValueFromCoords(index_form,element),index_form , element);
							line.instance.jexcel.records[element][index_form].innerHTML = result;
							//line.instance.jexcel.setValueFromCoords(index_form, element, result, true);

						}
					}

				}
			}

this has been fixed in v3.6.0+


[ECP-9156] Express Checkout Options missing in the Checkout

Hi
The express checkout feature is great but it seems to have been missed from the most important location, which is in the checkout!
Shopify use it and it is the most used payment option in their checkout. We are constantly being asked by our shoppers why we don't have this function. I would be very grateful if you could add this feature, it will increase conversions for everyone. For the skilled developer on the Adyen team I am sure it would only be an afternoons work :)
Many thanks
James

Hello @jamstew2001,
Thank you for creating this issue for the enhancement. We've created an internal investigation ticket for this implementation.
Best regards,
Can


merge package from arlac77/npm-package-template

package.json

chore(package<EMAIL_ADDRESS>chore(scripts): cover@#overwrite c8 --temp-directory build/coverage ava && c8 report -r lcov --temp-directory build/coverage
chore(package): add nyc from template
chore(package): set $.ava.require='esm' as in template
chore(package): set $.ava.files='tests/-test.js,tests/-test.mjs' as in template
chore(package): set $.ava.extensions='js,mjs' as in template

Codecov Report

Merging #372 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #372   +/-   ##
=======================================
  Coverage   85.04%   85.04%
=======================================
  Files           1        1
  Lines         214      214
=======================================
  Hits          182      182
  Misses         32       32

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d381b24...fa13fb4. Read the comment docs.

Coverage remained the same at 85.654% when pulling fa13fb40f9f2956a0c35f3e9053da6aee1b3acba on template-sync-1 into d381b24ca354d51e7eeac71a592dc8a7d04d2111 on master.

:tada: This PR is included in version 3.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Set up react-i18next on web

Sets up the react-i18next library for web, so it's ready for localisation. Since we are planning to do this incrementally, I've chosen one feature area (the donations page) to start off with, just so there is a reference on what the new code looks like as well as giving a JSON resource file for setting up Weblate once this is merged.

Web frontend checklist

[x] Formatted my code with yarn format && yarn lint --fix
[x] There are no warnings from yarn lint
[x] There are no console warnings when running the app
[ ] Added any new components to storybook
[ ] Added tests where relevant
[x] All tests pass
[x] Clicked around my changes running locally and it works
[x] Checked Desktop, Mobile and Tablet screen sizes

I think the namespacing will help prevent key collisions, which will get trickier to spot as the app continues to grow and become more complex. The other benefit of splitting up the translations into multiple files is code splitting - this seems to be the suggested approach by the docs to ensure we only load in the translation needed to keep the initial app bundle size small. It fits well with the feature folder structure already so I thought it makes sense to go this way and it's also nicer for maintenance than having everything in a giant file imo.
For shared stuff, I guess the keys can either be under common or namespaced by the component name? I don't think having to add multiple namespaces in the useTranslation hook is going to be that bad - it's not that different to an additional import to me at least.