java rabbitmq常用API
时间: 2023-10-06 14:04:56 浏览: 108
以下是 RabbitMQ 常用的 Java API:
1. ConnectionFactory:用于创建 RabbitMQ 连接的工厂类。
2. Connection:表示与 RabbitMQ 的连接,可以创建一个或多个 Channel。
3. Channel:表示与 RabbitMQ 的通信通道,用于发送和接收消息。
4. QueueDeclareOk:表示队列声明的结果,包括队列名称、消息数量等信息。
5. BasicPublish:用于将消息发送到指定的 Exchange。
6. BasicConsume:用于从指定的队列中消费消息。
7. DeliverCallback:用于处理收到的消息。
8. Consumer:表示消息的消费者,可以注册到特定的队列中,处理该队列中的消息。
9. ExchangeDeclareOk:表示 Exchange 声明的结果,包括 Exchange 名称、类型等信息。
10. Binding:表示 Exchange 和 Queue 的绑定关系。
11. BasicAck:用于确认一条消息已经被消费。
12. BasicNack:用于拒绝一条消息,并可以选择是否重新入队列。
13. BasicReject:用于拒绝一条消息,并将其从队列中删除。
14. ConfirmCallback:用于处理消息投递的确认结果。
相关问题
帮我写个rabbitmq 常用的java工具类
好的,下面是一个 RabbitMQ 常用的 Java 工具类示例:
```java
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.MessageProperties;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
public class RabbitMQUtil {
// RabbitMQ 服务器地址
private static final String HOST = "localhost";
// RabbitMQ 服务器端口号
private static final int PORT = 5672;
// RabbitMQ 用户名
private static final String USERNAME = "guest";
// RabbitMQ 密码
private static final String PASSWORD = "guest";
// RabbitMQ 默认交换机名称
private static final String DEFAULT_EXCHANGE_NAME = "";
// RabbitMQ 默认队列名称
private static final String DEFAULT_QUEUE_NAME = "default_queue";
private static ConnectionFactory connectionFactory = new ConnectionFactory();
static {
// 设置 RabbitMQ 服务器地址、端口号、用户名和密码
connectionFactory.setHost(HOST);
connectionFactory.setPort(PORT);
connectionFactory.setUsername(USERNAME);
connectionFactory.setPassword(PASSWORD);
}
/**
* 发送消息到指定队列
*
* @param queueName 队列名称
* @param message 消息内容
*/
public static void sendMessage(String queueName, String message) throws IOException, TimeoutException {
Connection connection = connectionFactory.newConnection();
Channel channel = connection.createChannel();
// 声明队列
channel.queueDeclare(queueName, true, false, false, null);
// 发送消息到队列中
channel.basicPublish(DEFAULT_EXCHANGE_NAME, queueName, MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes());
channel.close();
connection.close();
}
/**
* 从指定队列中接收消息
*
* @param queueName 队列名称
* @return 接收到的消息内容
*/
public static String receiveMessage(String queueName) throws IOException, TimeoutException {
Connection connection = connectionFactory.newConnection();
Channel channel = connection.createChannel();
// 声明队列
channel.queueDeclare(queueName, true, false, false, null);
// 从队列中接收消息
channel.basicQos(1);
String message = null;
// 开启手动确认模式
channel.basicConsume(queueName, false, (consumerTag, delivery) -> {
message = new String(delivery.getBody(), "UTF-8");
// 手动确认消息已被接收
channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
}, consumerTag -> {
});
channel.close();
connection.close();
return message;
}
/**
* 删除指定队列
*
* @param queueName 队列名称
*/
public static void deleteQueue(String queueName) throws IOException, TimeoutException {
Connection connection = connectionFactory.newConnection();
Channel channel = connection.createChannel();
// 删除队列
channel.queueDelete(queueName);
channel.close();
connection.close();
}
}
```
上面这个工具类提供了 RabbitMQ 常用的三个操作:发送消息、接收消息和删除队列。其中,发送消息和删除队列都比较简单,主要是调用 RabbitMQ 的 API 完成相应操作。而接收消息则需要一些特殊的设置,比如手动确认消息已被接收等。需要注意的是,在使用时需要先安装 RabbitMQ 服务器,并在该服务器上创建相应的队列。
rabbitmq JmsTemplate
RabbitMQ是一个开源的消息中间件,而JmsTemplate是Spring Framework提供的用于与消息中间件进行交互的模板类。JmsTemplate封装了与JMS(Java Message Service)兼容的消息中间件的常见操作,使得在Spring应用中使用消息队列变得更加简单和方便。
通过JmsTemplate,我们可以使用简单的方法发送和接收消息,而无需关心底层的JMS API细节。它提供了一些常用的方法,如发送消息、接收消息、转换消息等。
在使用JmsTemplate与RabbitMQ进行交互时,需要配置RabbitMQ的连接工厂和目的地(队列或主题)。连接工厂用于创建连接和会话,而目的地则指定了消息发送和接收的目标。
以下是使用JmsTemplate与RabbitMQ进行消息发送和接收的示例代码:
1. 配置JmsTemplate和连接工厂:
```java
@Configuration
public class RabbitMQConfig {
@Bean
public ConnectionFactory connectionFactory() {
CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
connectionFactory.setHost("localhost");
connectionFactory.setPort(5672);
connectionFactory.setUsername("guest");
connectionFactory.setPassword("guest");
return connectionFactory;
}
@Bean
public JmsTemplate jmsTemplate(ConnectionFactory connectionFactory) {
JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory);
jmsTemplate.setDefaultDestinationName("myQueue"); // 设置默认目的地
return jmsTemplate;
}
}
```
2. 发送消息:
```java
@Autowired
private JmsTemplatemsTemplate;
public void sendMessage(String message) {
jmsTemplate.convertSend(message);
}
```
3. 接收消息:
```java
@Autowired
private JmsTemplate jmsTemplate;
public String receiveMessage() {
return (String) jmsTemplate.receiveAndConvert();
}
```
以上代码演示了如何使用JmsTemplate与RabbitMQ进行消息的发送和接收。你根据实际需求进行配置和使用。
阅读全文