Метод messageArrived блокируется, поэтому вы не можете попытаться опубликовать сообщение, используя то же соединение mqttClient. Вам нужно использовать другой поток, который имеет собственное соединение с брокером.
Если это одноразовая ситуация, вы можете запустить новый поток и сделать все в нем, но если ваше приложение будет постоянно публиковать сообщения в поступающих сообщениях, то было бы лучше запустить поток, подключиться к брокеру, а затем подождать для передачи информации из метода messageArrived.