RabbitTemplate.send()是否保证向RabbitMQ传递消息?

时间:2017-11-23 11:45:47

标签: java spring rabbitmq amqp spring-amqp

使用Spring AMQP,当对方法rabbitTemplate.send(message)的调用返回时(来自org.springframework.amqp.rabbit.core.RabbitTemplate类),我们可以确定该消息已在RabbitMQ上传递和复制集群?

2 个答案:

答案 0 :(得分:2)

更新:这不是正确答案。请参阅@GaryRussell的答案

如果您的意思是发布商与RabbitMQ之间唯一的沟通 好的。您不必执行除此之外的任何操作,以确保消息存储和复制是RabbitMQ工作的一部分。

如果发送邮件有任何问题,请记得catch var element = new Drawing( new DW.Inline( new DW.Extent() { Cx = 990000L, Cy = 792000L }, new DW.EffectExtent() { LeftEdge = 0L, TopEdge = 0L, RightEdge = 0L, BottomEdge = 0L }, new DW.DocProperties() { Id = (UInt32Value)1U, Name = "Picture 1" }, new DW.NonVisualGraphicFrameDrawingProperties( new A.GraphicFrameLocks() { NoChangeAspect = true }), new A.Graphic( new A.GraphicData( new PIC.Picture( new PIC.NonVisualPictureProperties( new PIC.NonVisualDrawingProperties() { Id = (UInt32Value)0U, Name = "New Bitmap Image.jpg" }, new PIC.NonVisualPictureDrawingProperties()), new PIC.BlipFill( new A.Blip( new A.BlipExtensionList( new A.BlipExtension() { Uri = "{28A0092B-C50C-407E-A947-70E740481C1C}" }) ) { Embed = relationshipId, CompressionState = A.BlipCompressionValues.Print }, new A.Stretch( new A.FillRectangle())), new PIC.ShapeProperties( new A.Transform2D( new A.Offset() { X = 0L, Y = 0L }, new A.Extents() { Cx = 990000L, Cy = 792000L }), new A.PresetGeometry( new A.AdjustValueList() ) { Preset = A.ShapeTypeValues.Rectangle })) ) { Uri = "http://schemas.openxmlformats.org/drawingml/2006/picture" }) ) { DistanceFromTop = (UInt32Value)0U, DistanceFromBottom = (UInt32Value)0U, DistanceFromLeft = (UInt32Value)0U, DistanceFromRight = (UInt32Value)0U, EditId = "50D07946" }); wordDoc.MainDocumentPart.Document.Body.AppendChild(new Paragraph(new Run(element)));

答案 1 :(得分:2)

不,不。 AMQP是一种异步协议。为了保证交付,您需要使用Publisher Confirms and Returns - 即使这样,确认(或返回)也会在另一个线程上返回。