vertx IllegalArgumentException: нет кодека сообщений для типа - как создать потребителя для пользовательского типа - PullRequest
0 голосов
/ 09 октября 2018

У меня есть вертикаль, которая создает потребителя шины событий следующим образом:

    public void start() {
        vertx.eventBus().consumer(ADDRESS_REQUEST, this::handleRequestMessage);

    }

    private void handleRequestMessage(Message<VWApiConversation> msg) {

       VWApiConversation conversation = msg.body();

    }

Но при отправке сообщения на этот адрес:

 vertx.eventBus().send(VehicleStateCoordinatorVerticle.ADDRESS_REQUEST, conversation, deliveryOptions, res -> {

...

Я получаю ошибку:

java.lang.IllegalArgumentException: No message codec for type: class com.vulog.vwgateway.model.VWApiConversation

Я что-то упустил?

1 Ответ

0 голосов
/ 09 октября 2018

Vert.x поддерживает сериализацию примитивов JVM, Buffer s и JsonObject s по умолчанию.для других пользовательских типов вам нужно написать свой MessageCodec .

вот некоторая документация, которая может оказаться полезной:

  • официальный документ имеет несколько примечаний по этому поводу.раздел под названием «Типы сообщений» будет представлять особый интерес для вас.
  • здесь - это пример MessageCodec реализации.(в этом фрагменте не показана регистрация кодека через EventBus.registerCodec().)

, на мой вкус, я всегда использовал JsonObject в качестве средства обмена сообщениями (так как мои настройки позволили мне сделать это),кажется трудной задачей написать собственные (де) сериализаторы для каждого типа домена.

...