我真的很喜欢詹姆斯·刘易斯的微服务: Java,Unix Way演讲。
在本演示文稿中,James介绍了如何通过编写队列处理引擎来实现用户注册服务,该引擎从atom提要读取事件,并公开多个使用者可以从中读取的端点,然后将其处理并转换为用户实体。
关于特定幻灯片的注释(视频中大约是18:40 )说,这是使用竞争消费者EIP实现的。
队列处理引擎对事件队列公开的atom集合使用条件GET、PUT和Etags实现竞争消费者模式
这种队列(以及他们谈论具有异构用户的方式)表明,它是一个发布-订阅通道。
我真的不明白这是如何实现的,EIP书中说,竞争的消费者只起作用:
..。使用点对点通道;发布订阅通道上的多个使用者只需创建每条消息的更多副本即可。
我假设队列处理器公开了竞争消费者调用的REST资源,为新项目发出GET请求,但是PUT请求和etags在哪里出现呢?
发布于 2014-06-01 19:11:09
一位同事采访了Martin和James,并总结了一个半记住的总结,他们暗示您只是没有多个队列的使用者。
只要有一个消费服务,并有监控到位,以确保您的警报,如果它关闭。
发布于 2013-08-23 00:05:11
在这个上下文中使用PUT方法的实体标记在https://www.rfc-editor.org/rfc/rfc5023#section-9.5中解释了
编辑后,客户端可以将条目放在一个If匹配的头中并发送ETag实体值,通知服务器接受该条目,条件是所发送的实体值仍然与服务器的匹配。
PUT /edit/first-post.atom HTTP/1.1
Host: example.org
Authorization: Basic ZGFmZnk6c2VjZXJldA==
Content-Type: application/atom+xml;type=entry
Content-Length: nnn
If-Match: "e180ee84f0671b1"
<?xml version="1.0" ?>
<entry xmlns="http://www.w3.org/2005/Atom">
<title>Atom-Powered Robots Run Amok</title>
<id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
<updated>2007-02-24T16:34:06Z</updated>
<author><name>Captain Lansing</name></author>
<content>Update: it's a hoax!</content>
</entry>然而,自那以后,服务器收到了比客户端的副本更近的副本,并且它以412的状态代码进行响应(“前提条件失败”)。
HTTP/1.1 412 Precondition Failed
Date: Sat, 24 Feb 2007 16:34:11 GMT换句话说,如果其他人已经编辑了资源,那么客户机就不想编辑资源,因此它会将If-Match头中的实体标记与PUT请求一起发送。客户端对服务器说:“只有在没有其他人编辑过此资源的情况下,才接受我的编辑。”
https://stackoverflow.com/questions/18188378
复制相似问题