使用Java中的ElasticSearch消耗RabbitMQ队列

时间:2017-06-23 15:18:06

标签: java spring elasticsearch rabbitmq amqp

我正在尝试创建一个特定的 RabbitMQ 队列,并将 ElasticSearch 作为队列的使用者。

现在自动在 Java 中自动创建队列的最常用方法是使用 Spring AMQP 中的注释。

但在我的情况下,我需要显式创建队列并调用create queue方法:

public  void createQueue() throws java.io.IOException { 
  ConnectionFactory factory = new ConnectionFactory();
  factory.setHost("localhost");
  Connection connection = factory.newConnection();
  Channel channel = connection.createChannel();
  channel.queueDeclare(TASK_QUEUE_NAME, true, false, false, null);
}

我的理解是,由于此处明确创建了队列,因此我还必须明确地为该队列创建 ElasticSearch 使用者,而不是通过@Bean注释。

我在创建 ElasticSearch 时发现的唯一教程明确地创建了一个这样的教程:

//Create Client
Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name","localtestsearch").build();
TransportClient transportClient=new TransportClient(settings);
transportClient = transportClient.addTransportAddress(new InetSocketTransportAddress("localhost",9300));
return(Client)transportClient;

//Create Index and set settings and mappings
CreateIndexRequestBuilder createIndexRequestBuilder=transportClient.admin().indices().prepareCreate(indexName);
createIndexRequestBuilder.execute().actionGet();

//Add documents
IndexRequestBuilder indexRequestBuilder=transportClient().prepareIndex(indexName,documentType,documentId);

//build json object
XContentBuilder contentBuilder=jsonBuilder().startObject().prettyPrint();
contentBuilder.field("name","jai");
contentBuilder.stopObject();
indexRequestBuilder.setSource(contentBuilder);
IndexResponse response=indexRequestBuilder.execute().actionGet();

很难看出如何将TransportClient合并到我的createQueue()方法中并使用已创建的队列。

有人能告诉我源代码中缺少什么吗?

0 个答案:

没有答案
相关问题