Как программно установить идентификатор канала для службы очередей OCI?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как программно установить идентификатор канала для службы очередей OCI?

Сообщение Anonymous »

Это блог для каналов обслуживания Oracle Cloud Infrastructure Queue: https://blogs.oracle.com/cloud-infrastr ... -oci-queue
Где мы можно увидеть раздел «Отправка сообщений в определенный канал».
Мне интересно, сможем ли мы сделать это программно в Java (например).
Вот мой QueueProducer:

Код: Выделить всё

package com.oehs.service;

import com.oracle.bmc.ConfigFileReader;
import com.oracle.bmc.auth.ConfigFileAuthenticationDetailsProvider;
import com.oracle.bmc.queue.QueueClient;
import com.oracle.bmc.queue.model.PutMessagesDetails;
import com.oracle.bmc.queue.model.PutMessagesDetailsEntry;
import com.oracle.bmc.queue.requests.PutMessagesRequest;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;

import java.util.Collections;

@ConditionalOnExpression("${oracle-vault.enabled:false}") public class QueueProducer {

@Value("${oracle-vault.profile:QUEUE}")
private String oracleProfile;

public void produce(String message) throws Exception {
// Authentication using OCI Config file (~/.oci/config)
final ConfigFileReader.ConfigFile configFile = ConfigFileReader.parseDefault(oracleProfile);
ConfigFileAuthenticationDetailsProvider provider =
new ConfigFileAuthenticationDetailsProvider(oracleProfile);

// Create Queue Client
QueueClient queueClient = new QueueClient(provider);
queueClient.setEndpoint("testEndpoint");

// Replace with your Queue OCID
String queueId = "testQueue";

// Create message details
PutMessagesDetailsEntry messageEntry = PutMessagesDetailsEntry.builder()
.content(message) // Message content
.build();

// Put the message into the queue
PutMessagesDetails putMessagesDetails = PutMessagesDetails.builder()
.messages(Collections.singletonList(messageEntry))
.build();

// Create request to put messages
PutMessagesRequest putMessagesRequest = PutMessagesRequest.builder()
.queueId(queueId)
.putMessagesDetails(putMessagesDetails)
.build();

// Send the message
queueClient.putMessages(putMessagesRequest);

queueClient.close();
}
}
Этот объект для публикации сообщения не содержит идентификатор канала... Есть идеи, как это сделать?
Обновить : Я нашел то, что мне нужно, в документации Oracle (https://docs.oracle.com/en-us/iaas/api/ ... utMessages), поэтому вот код:

Код: Выделить всё

PutMessagesDetails putMessagesDetails = PutMessagesDetails.builder()
.messages(new ArrayList(Arrays.asList(PutMessagesDetailsEntry.builder()
.content("EXAMPLE-content-Value")
.metadata(MessageMetadata.builder()
.channelId("ocid1.test.oc1..EXAMPLE-channelId-Value")
.customProperties(new HashMap() {
{
put("EXAMPLE_KEY_nwH3Y","EXAMPLE_VALUE_KBPc0dN7O2rp1eVCL3aO");
}
}).build()).build()))).build();
Но у меня нет метаданных в моем объекте PutMessagesDetails. У меня есть последняя версия OCI sdk в файле pom.xml: Я действительно не уверен, что я делаю неправильно...

Подробнее здесь: https://stackoverflow.com/questions/790 ... ue-service
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»