весенний поток облака поддерживает json заголовок? (в теле) - PullRequest
0 голосов
/ 28 апреля 2020

Все наши потребительские приложения используют spring-cloud-stream.
Но наше одно большое приложение-производитель (унаследованное ..) не может использовать spring-cloud-stream, потому что версия весенней загрузки - 1.4.

Мы пытались отправить сообщение с помощью kinesis брокера сообщений.
Мы хотим отправлять пользовательские заголовки через kinesis, но kinesis не поддерживает отправку заголовков, как вы знаете.
Поэтому мы решили отправить заголовок в body.

{
  "header": {
    ~~
  }
  "payload": {
    ~~
  }
}

Но spring-cloud-stream не может получить заголовок в body.
Мы думали, что можем получить заголовок в body, используя опцию embeddedHeaders (в spring-cloud-stream ).

{channelName}:
    destination: local-event
    consumer:
        header-mode: embeddedHeaders

Но ... это не работает.

Итак ... есть ли способ получить заголовок в body?
Или мы должны выбрать другой способ?

1 Ответ

1 голос
/ 28 апреля 2020

Значения встроенного заголовка - это отдельные JSON фрагменты, но они закодированы в сообщение в двоичном формате - см. EmbeddedHeaderUtils .

Кодирует запрошенные заголовки в полезную нагрузку с форматом.

0xff, n(1), [ [lenHdr(1), hdr, lenValue(4), value] ... ]. 

0xff указывает этот новый формат; n - количество заголовков (максимум 255); для каждого заголовка за длиной имени (1 байт) следует имя, за которым следует значение длины (int), за которым следует значение (json).

...