Зимуйте поиск, преобразуйте байт [], чтобы Перечислить <LuceneWork>

С Зимуют Поиск 3.1.1, когда один хотел послать индексируемое предприятие очереди JMS для последующей обработки, в onMessage() метод обработки, MDB было достаточно, чтобы применить бросок, чтобы получить список LuceneWork, например,

List queue = (List) objectMessage.getObject();

Но в версии 4.2.0 это больше не выбор, поскольку objectMessage.getObject() возвращает байт [] .

How could I deserialize this byte[] into List?

Я осмотрел сообщение и видел, что у меня есть стоимость для JMSBackendQueueTask. INDEX_NAME_JMS_PROPERTY .

0
nl ja de

1 ответы

Вы могли простираться AbstractJMSHibernateSearchController и имейте его соглашение с этими деталями или взгляните на его источник, который содержит:

indexName = objectMessage.getStringProperty(JmsBackendQueueTask.INDEX_NAME_JMS_PROPERTY);
indexManager = factory.getAllIndexesManager().getIndexManager(indexName);
if (indexManager == null) {
    log.messageReceivedForUndefinedIndex(indexName);
    return;
}
queue = indexManager.getSerializer().toLuceneWorks((byte[]) objectMessage.getObject());
indexManager.performOperations(queue, null);

По сравнению с более старыми версиями 3.x есть два главных различия в дизайне, чтобы иметь в виду:

  • обслуживание Последовательно-параллельньного преобразователя pluggable, таким образом, оно должно искаться
  • Каждый индекс (определенный по имени) может быть независимый бэкенд

Преобразование в последовательную форму теперь выполняется (по умолчанию) используя апачский Avro, поскольку более новые классы Lucene не сериализуемые.

1
добавлено