首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用http实现竞争消费者

如何使用http实现竞争消费者
EN

Stack Overflow用户
提问于 2013-08-12 13:33:51
回答 2查看 640关注 0票数 3

我真的很喜欢詹姆斯·刘易斯的微服务: Java,Unix Way演讲。

在本演示文稿中,James介绍了如何通过编写队列处理引擎来实现用户注册服务,该引擎从atom提要读取事件,并公开多个使用者可以从中读取的端点,然后将其处理并转换为用户实体。

关于特定幻灯片的注释(视频中大约是18:40 )说,这是使用竞争消费者EIP实现的。

队列处理引擎对事件队列公开的atom集合使用条件GET、PUT和Etags实现竞争消费者模式

这种队列(以及他们谈论具有异构用户的方式)表明,它是一个发布-订阅通道。

我真的不明白这是如何实现的,EIP书中说,竞争的消费者只起作用:

..。使用点对点通道;发布订阅通道上的多个使用者只需创建每条消息的更多副本即可。

我假设队列处理器公开了竞争消费者调用的REST资源,为新项目发出GET请求,但是PUT请求和etags在哪里出现呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-01 19:11:09

一位同事采访了Martin和James,并总结了一个半记住的总结,他们暗示您只是没有多个队列的使用者。

只要有一个消费服务,并有监控到位,以确保您的警报,如果它关闭。

票数 2
EN

Stack Overflow用户

发布于 2013-08-23 00:05:11

在这个上下文中使用PUT方法的实体标记在https://www.rfc-editor.org/rfc/rfc5023#section-9.5中解释了

编辑后,客户端可以将条目放在一个If匹配的头中并发送ETag实体值,通知服务器接受该条目,条件是所发送的实体值仍然与服务器的匹配。

代码语言:javascript
复制
   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的状态代码进行响应(“前提条件失败”)。

代码语言:javascript
复制
   HTTP/1.1 412 Precondition Failed
   Date: Sat, 24 Feb 2007 16:34:11 GMT

换句话说,如果其他人已经编辑了资源,那么客户机就不想编辑资源,因此它会将If-Match头中的实体标记与PUT请求一起发送。客户端对服务器说:“只有在没有其他人编辑过此资源的情况下,才接受我的编辑。”

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18188378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档