@RabbitHandler
public void receiverMsg(@Payload String msg,
@Headers Map<String,Object> headers,
Channel channel) throws Exception{
// 消费者消费消息
System.out.println("==========获取消息,开始消费============");
Long deliveryTag = (Long) headers.get(AmqpHeaders.DELIVERY_TAG);// 获取消息序号
System.out.println("=======消息成功消费,手动触发ack===============");
boolean multiple = false;
channel.basicAck(deliveryTag,multiple);
}
Long deliveryTag = (Long) headers.get(AmqpHeaders.DELIVERY_TAG);// 这里提示报错
Caused by: java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Long (java.lang.String and java.lang.Long are in module java.base of loader 'bootstrap')
at com.gulang.core.rabbitmq.ComsumerMsg.receiverMsg(ComsumerMsg.java:33) ~[classes/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:171) ~[spring-messaging-5.1.8.RELEASE.jar:5.1.8.RELEASE]
at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:120) ~[spring-messaging-5.1.8.RELEASE.jar:5.1.8.RELEASE]
at org.springframework.amqp.rabbit.listener.adapter.HandlerAdapter.invoke(HandlerAdapter.java:50) ~[spring-rabbit-2.1.7.RELEASE.jar:2.1.7.RELEASE]
at org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:196) ~[spring-rabbit-2.1.7.RELEASE.jar:2.1.7.RELEASE]
... 26 common frames omitted
试试改成
返回的就String类型,不能强制转换成Long