欢迎来访我的博客。

消息队列之RabbitMQ-06_远程过程调用(RPC)

其他 小张哥哥 60067浏览 90评论

在此,我们先来看一下什么是远程过程调用。远程过程调用简单来说可以是客户端调用远程服务端的服务。远程过程调用的大致过程如下:
1、客户端client发起服务调用请求。
2、client stub 可以理解成一个代理,会将调用方法、参数按照一定格式进行封装,通过服务提供的地址,发起网络请求。
3、消息通过网络传输到服务端。
4、server stub接受来自socket的消息
5、server stub将消息进行解包、告诉服务端调用的哪个服务,参数是什么
6、结果返回给server stub。
7、sever stub把结果进行打包交给socket
8、socket通过网络传输消息
9、client slub 从socket拿到消息。
10、client stub解包消息将结果返回给client。

现在我们可以使用RabbitMQ来说构建一个RPC系统:一个客户端和一个RPC服务器。我们通过RPC服务来发挥一个斐波那契数列。

客户端接口

我们先来创建一个简单的客户端,通过一个"call"方法来发送一个RPC请求,并在收到回应前保持阻塞。

fibonacci_rpc = FibonacciRpcClient()
result = fibonacci_rpc_call(4)
print('fib(4) is %r' %(result,))

回调队列
通过RabbitMQ实现RPC是很容易的。一个客户端发送消息,服务器端将其应用到一个回复消息中。为了接收到恢复消息,客户端需要在发送请求的同时发送一个回调队列(callback queue)的地址。

result =  channel.queue.declare(queue='', exclusive=True)
callback_queue = result.method.queue

channel.basic.publish(exchange='',
                      routing_key='rpc_queue',
                      properties=pika.BasicProperties(
                          reply_to=callback_queue,
                      ),
                      body=request)
#... 其它从callback_queue中获取响应信息的代码 ...

AMQP协议给消息预定了一系列属性,如下几个是比较常用到的:
delivery_mode(投递模式):可以将消息标记为持久的(值为2)或暂存的(除2以外的其它值);
content_type(内容属性):用来藐视编码的mime-type。比如在常用application/json来描述JSON编码类型;
reply_to(回复目标):通常用来命名回调队列;
correlation_id(关联标识):用来将RPC的响应和请求关联起来。

关联标识

在前面,我们为每一个RPC请求都新建一个回调队列。这在实际使用中并不好,我们可以为每个客户端建立一个独立的回调队列。
此时,当队列接收到一个响应的时候,客户端可能会无法辨别这个响应是属于哪个请求的。correlation_id可以解决这个问题的。correlation_id对于每个RPC请求都是独立的。当我们从回调队列中接收到一个消息的时候,我们就可以通过查看这个属性来将响应和请求匹配起来。如果客户端匹配不到任何请求,则说明它是未知的,则丢弃掉。

为什么我们接收到未知消息的时候不抛出一个错误,而是要将它忽略掉?这是为了解决服务器端有可能发生的竞争情况。尽管可能性不大,但RPC服务器还是有可能在已将应答发送给我们但还未将确认消息发送给请求的情况下死掉。如果这种情况发生,RPC在重启后会重新处理请求。这就是为什么我们必须在客户端优雅的处理重复响应,同时RPC也需要尽可能保持幂等性。

总结
下面来总结以下我们RPC工作的流程:

rabbitmq_rpc.png

  1. 当客户端启动的时候,它将创建一个匿名独享的回调队列;

  2. 在RPC请求中,客户端发送的消息带有两个属性:一个是设置会掉队列的reply_to属性,一个是设置请求和响应关联标识的correlation_id。

  3. 将请求发送到一个rpc_queue队列中;

  4. RPC服务器(在此作为worker)等待请求发送到这个队列中。当请求到来时,服务器就执行自己的任务,然后将任务的执行结果发送给reply_to指定的队列中;

  5. 客户端等待回调队列中的数据。当队列中有消息出现时,客户端会检查消息的correlation_id属性,如果该属性的值与请求的相匹配,则将该消息返回给应用。

RPC代码

服务端的代码如下:
rpc_server.py

import pika


connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))

channel = connection.channel()

channel.queue_declare(queue='rpc_queue')


def fib(n):
    if n <= 1:
        return n
    return fib(n-1) + fib(n-2)



def on_request(ch, method, props, body):
    n = int(body)

    print('[.] fib(%s)' %n)
    response = fib(n)

    ch.basic_publish(exchange='',
                     routing_key=props.reply_to,
                     properties=pika.BasicProperties(correlation_id=props.correlation_id,),
                     body=str(response)
                     )
    ch.basic_ack(delivery_tag=method.delivery_tag)


channel.basic_qos(prefetch_count=1)
channel.basic_consume(on_message_callback=on_request,
                      queue='rpc_queue')

print('[x] Awaiting RPC requests')
channel.start_consuming()

上面的服务端的代码中:
第4行:我们建立连接,声明队列;
第11行:我们定义我们想要远程调用的fibonacci函数;
第18行:我们为basic_consume声明一个回调函数,这是RPC服务器端的核心,它执行之际操作并作出响应;
第32行:我们可以在服务器上躲开几个线程,为了将负载平均分摊到多个服务器,我们需要设置prefetch_count。

客户端的代码如下:
rpc_client.py

import sys
import uuid
import pika


class FibonacciRpcClient:
    def __init__(self):
        self.connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))

        self.channel = self.connection.channel()

        result = self.channel.queue_declare(queue='', exclusive=True)
        self.callback_queue = result.method.queue

        self.channel.basic_consume(on_message_callback=self.on_response,
                                   auto_ack=True,
                                   queue=self.callback_queue)

    
    def on_response(self, ch, method, props, body):
        if self.corr_id == props.correlation_id:
            self.response = body
            
            
    def call(self, n):
        self.response = None
        self.corr_id = str(uuid.uuid4())
        self.channel.basic_publish(exchange='',
                                   routing_key='rpc_queue',
                                   properties=pika.BasicProperties(
                                       reply_to=self.callback_queue,
                                       correlation_id=self.corr_id,
                                   ),
                                   body=str(n))
        while self.response is None:
            self.connection.process_data_events()
        return int(self.response)

fibnacci_rpc = FibonacciRpcClient()

n = sys.argv[1]
print('[x] Requesting fib(%s)' %n)
response = fibnacci_rpc.call(n)
print('[.] Got %r' %(response))

在上面客户端的代码中:
第7-12行:建立连接,建立通道,并且为回复生命一个独享的回调队列;
第15行:订阅回调这个回调队列,以便接收RPC的响应;
第20-22行:on_response回调函数对每一个响应执行一个简单的操作:检查每一个响应消息的correlation_id属性是否与我们期待的一致,如果一致,将响应结果赋给self.response,然后跳出consuming循环;
第25行:定义call方法,它执行真正的RPC请求;
第27行:生成唯一的correlation_id,并把值保存起来。on_response回调函数会用它来获取符合要求的响应;
第28-34行:将带有reply_to和correlation_id属性的消息发布出去;

现在我们可以启动我们的服务端:

(learn_rabbitmq) $ python rpc_server.py 
[x] Awaiting RPC requests

运行客户端,发送请求:

(learn_rabbitmq) $ python rpc_client.py 0
[x] Requesting fib(0)
[.] Got 0
(learn_rabbitmq) $ python rpc_client.py 1
[x] Requesting fib(1)
[.] Got 1
(learn_rabbitmq) $ python rpc_client.py 2
[x] Requesting fib(2)
[.] Got 1
(learn_rabbitmq) $ python rpc_client.py 3
[x] Requesting fib(3)
[.] Got 2
(learn_rabbitmq) $ python rpc_client.py 4
[x] Requesting fib(4)
[.] Got 3
(learn_rabbitmq) $ python rpc_client.py 5
[x] Requesting fib(5)
[.] Got 5
(learn_rabbitmq) $ python rpc_client.py 6
[x] Requesting fib(6)
[.] Got 8
(learn_rabbitmq) $ python rpc_client.py 10
[x] Requesting fib(10)
[.] Got 55
(learn_rabbitmq) $ python rpc_client.py 20
[x] Requesting fib(20)
[.] Got 6765
(learn_rabbitmq) $ python rpc_client.py 30
[x] Requesting fib(30)
[.] Got 832040
(learn_rabbitmq) $

服务端运行情况:

(learn_rabbitmq) $ python rpc_server.py 
[x] Awaiting RPC requests
[.] fib(0)
[.] fib(1)
[.] fib(2)
[.] fib(3)
[.] fib(4)
[.] fib(5)
[.] fib(6)
[.] fib(10)
[.] fib(20)
[.] fib(30)


上述代码仍旧比较简单,实际使用中还需要去解决一些比较重要的问题:

  1. 当没有服务器运行时,客户端应该如何作出反应;

  2. 客户端是否需要实现类似RPC超时的机制;

  3. 如果服务发生故障,并且抛出以尝,应该被转发到客户端吗?

  4. 在处理前,应防止混入无效的信息(边界检查)。


转载请注明:禅思 » 消息队列之RabbitMQ-06_远程过程调用(RPC)?

喜欢 (0) or 分享 (0)

我的个人微信公众号,欢迎关注

扫码或搜索:Python后端开发Django

Python后端开发Django

微信公众号 扫一扫关注

结交朋友、一起学习,一起进步。

科波之主

QQ号 386046154 立即加入

添加微信,进行技术交流

专注技术交流, 一同成长进步

我的微信号

如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击下面

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(90)个小伙伴在吐槽
    1. WE ARE INTERESTED IN PARTNERSHIP WITH YOUR ESTIMINE COMPANY. KINDLY SEND US YOUR BUSINESS TERMS SO WE CAN PROCEED WITH OUR BUSINESS CONTRACT. WAITING FOR YOUR REPLY CONTACT E-MAIL: joyce@cercoon.com REGARD, JOYCE PAGE (sales Manager ) CARCOON STORAGE SYSTEMS INT Ltd. CONTACT E-MAIL: joyce@cercoon.com Address: Orchard Mill, 2 Orchard St S, Salford M6 6FL, UK
      EdwardMem 2019-09-12 15:31:25 回复
      • You've got probably the greatest sites. https://shop4shoe.com
        osrumfBaw 2020-02-07 13:33:30 回复
        • buy cbd oil [url=http://buycbdoilwalm.com/ ]buy cbd oil online [/url] cbd tinctures buy hemp cbd oil
          engeclageoug 2020-02-19 02:25:07 回复
          • cbd superbugs http://buycbdoilwalm.com/ - hemp seed oil benefits hemp lotion best cbd for pain
            DicSmeliCascisa 2020-02-29 21:42:06 回复
            • casino bonus codes play slots online vegas casino slots real casino slots
              skistSnaxasse 2020-03-01 19:55:38 回复
              • I was wondering if you ever considered changing the layout of your website? Its very well written
                제왕카지노 2021-06-20 21:12:23 回复
                • I'm impressed, I must say. Rarely do I encounter a blog that's equally educative and engaging, and without a doubt, you have hit the nail on the head. The issue is an issue that not enough men and women are speaking intelligently about. I am very happy that I came across this in my search for something concerning this.
                  kẻ may mắn 2021-06-20 21:44:34 回复
                  • Hey there, I think your site might be having browser compatibility issues. When I look at your website in Firefox, it looks fine but when opening in Internet Explorer, it has some overlapping. I just wanted to give you a quick heads up! Other then that, excellent blog!
                    메리트카지노 2021-06-21 00:04:01 回复
                    • Have you ever considered writing an e-book or guest authoring on other websites? I have a blog based upon on the same topics you discuss and would love to have you share some stories/information. I know my readers would appreciate your work. If you are even remotely interested, feel free to shoot me an e mail.
                      카지노 사이트 2021-06-21 00:24:14 回复
                      • These are genuinely wonderful ideas in regarding blogging. You have touched some pleasant points here. Any way keep up wrinting.
                        우리카지노 2021-06-21 00:30:42 回复
                        • Hey I know this is off topic but I was wondering if you knew of any widgets I could add to my blog that automatically tweet my newest twitter updates. I've been looking for a plug-in like this for quite some time and was hoping maybe you would have some experience with something like this. Please let me know if you run into anything. I truly enjoy reading your blog and I look forward to your new updates.
                          바카라사이트 2021-06-21 02:43:53 回复
                          • It is the best time to make some plans for the future and it is time to be happy. I have read this post and if I could I want to suggest you some interesting things or suggestions. Maybe you could write next articles referring to this article. I wish to read more things about it!
                            카지노 바카라 2021-06-21 03:56:59 回复
                            • You're so interesting! I don't suppose I have read something like this before. So wonderful to discover another person with genuine thoughts on this issue. Really.. many thanks for starting this up. This site is one thing that is needed on the internet, someone with some originality!
                              더킹 카지노 2021-06-21 04:24:15 回复
                              • norvasc amlodipine brand name interactions for amlodipine amlodipine swelling norvasc amlodipine norvasc dosage
                                Davidnip 2021-06-21 05:10:01 回复
                                • I like the valuable information you provide in your articles. I will bookmark your blog and check again here regularly. I am quite certain I will learn many new stuff right here! Good luck for the next!
                                  제왕 카지노 2021-06-21 07:12:51 回复
                                  • Hmm it appears like your site ate my first comment (it was super long) so I guess I'll just sum it up what I had written and say, I'm thoroughly enjoying your blog. I too am an aspiring blog writer but I'm still new to everything. Do you have any tips and hints for first-time blog writers? I'd certainly appreciate it.
                                    더킹 카지노 2021-06-21 07:48:11 回复
                                    • I must thank you for the efforts you've put in penning this site. I'm hoping to view the same high-grade content from you in the future as well. In fact, your creative writing abilities has encouraged me to get my very own website now
                                      카지노사이트 2021-06-21 08:21:31 回复
                                      • Hi, i think that i saw you visited my website thus i came to “return the favor”.I am attempting to find things to enhance my website!I suppose its ok to use a few of your ideas!!
                                        카지노사이트 2021-06-21 08:29:01 回复
                                        • It's going to be finish of mine day, but before finish I am reading this great paragraph to improve my know-how.
                                          바카라 사이트 2021-06-21 08:39:29 回复
                                          • I will right away seize your rss feed as I can't to find your e-mail subscription hyperlink or newsletter service. Do you've any? Kindly permit me recognize so that I may just subscribe. Thanks.
                                            더킹 카지노 2021-06-21 08:40:01 回复
                                            • atorvastatin 10mg tablets atorvastatin calcium warnings for lipitor atorvastatin 10mg tablets atorvastatin 80mg atorvastatin calcium tablets
                                              Thomasgrind 2021-06-21 09:22:51 回复
                                              • Hello everyone, it's my first pay a quick visit at this website, and paragraph is truly fruitful in support of me, keep up posting these content.
                                                더킹카지노 2021-06-21 10:14:01 回复
                                                • hydrochlor https://hydroxychloroquin1mg.com/ - chloroquine us cloroquina
                                                  anaendybroorb 2021-06-21 10:27:39 回复
                                                  • What's up Dear, are you really visiting this website daily, if so after that you will without doubt take pleasant know-how.
                                                    우리카지노계열 2021-06-21 13:09:45 回复
                                                    • losartan losartan drug class interactions for losartan losartan and alcohol losartan side effects losartan vs valsartan
                                                      JamesunelE 2021-06-21 13:37:43 回复
                                                      • tadalafil tab 10mg
                                                        AmyBelty 2021-06-21 17:42:25 回复
                                                        • meloxicam side effects meloxicam side effects meloxicam 15 mg meloxicam 10 meloxicam warnings meloxicam side effects
                                                          FidelMon 2021-06-21 17:56:40 回复
                                                          • It's amazing for me to have a website, which is good in support of my experience. thanks admin
                                                            카지노사이트 2021-06-21 18:04:08 回复
                                                            • This is really interesting, You are a very skilled blogger. I have joined your feed and look forward to seeking more of your excellent post. Also, I have shared your web site in my social networks!
                                                              카지노사이트 2021-06-21 18:38:18 回复
                                                              • Your mode of describing all in this piece of writing is actually pleasant, all can effortlessly know it, Thanks a lot.
                                                                코인카지노 2021-06-21 19:17:08 回复
                                                                • I think this is among the most significant information for me. And i am glad reading your article. But should remark on some general things, The website style is perfect, the articles is really nice : D. Good job, cheers
                                                                  바카라 사이트 2021-06-21 21:28:37 回复
                                                                  • metoprolol tartrate 25mg metoprolol 50 mg metoprolol er metoprolol er succinate metoprolol 100 mg metoprolol xl
                                                                    RobertGen 2021-06-21 21:58:01 回复
                                                                    • Fantastic beat ! I wish to apprentice even as you amend your website, how could i subscribe for a weblog website? The account helped me a appropriate deal. I were a little bit acquainted of this your broadcast provided brilliant transparent concept
                                                                      메리트카지노쿠폰 2021-06-21 22:24:38 回复
                                                                      • Hey I am so glad I found your blog page, I really found you by mistake, while I was researching on Aol for something else, Anyhow I am here now and would just like to say thanks a lot for a remarkable post and a all round exciting blog (I also love the theme/design), I don't have time to read it all at the minute but I have bookmarked it and also added in your RSS feeds, so when I have time I will be back to read a lot more, Please do keep up the fantastic job.
                                                                        솔카지노 2021-06-22 01:37:43 回复
                                                                        • Thank you for the auspicious writeup. It in fact was a amusement account it. Look advanced to more added agreeable from you! By the way, how can we communicate?
                                                                          더킹 카지노 2021-06-22 02:14:36 回复
                                                                          • It's going to be finish of mine day, however before ending I am reading this great paragraph to improve my know-how.
                                                                            더킹 카지노 2021-06-22 02:19:58 回复
                                                                            • Hi there i am kavin, its my first time to commenting anyplace, when i read this piece of writing i thought i could also make comment due to this sensible article.
                                                                              바카라사이트 2021-06-22 02:40:13 回复
                                                                              • If you want to increase your knowledge only keep visiting this web site and be updated with the newest gossip posted here.
                                                                                우리카지노 2021-06-22 03:18:07 回复
                                                                                • cymbalta drug class duloxetine 20mg cap duloxetine dr 30mg cymbalta reviews cymbalta drug class duloxetine 60 mg
                                                                                  Robertdaulp 2021-06-22 05:57:41 回复
                                                                                  • prednisone for asthma prednisone taper prednisone pack prednisone uses prednisone withdrawal symptoms alcohol and prednisone
                                                                                    JesseBiz 2021-06-22 09:52:26 回复
                                                                                    • viagra4m
                                                                                      OijGW 2021-06-22 13:33:41 回复
                                                                                      • viagra triangle viagra precautions viagra memes no prescription viagra viagra on sale genuine viagra canada
                                                                                        ShawnFex 2021-06-22 13:49:28 回复
                                                                                        • What a material of un-ambiguity and preserveness of precious know-how on the topic of unpredicted feelings.
                                                                                          SM카지노 2021-06-22 14:10:14 回复
                                                                                          • Hey there! I've been reading your web site for a while now and finally got the courage to go ahead and give you a shout out from Huffman Texas! Just wanted to tell you keep up the fantastic job!
                                                                                            keno truc tiep 2021-06-22 15:39:55 回复
                                                                                            • cialis generic buy generic cialis online drugstore cialis cialis dosage recommend cialis 100mg review cialis dose
                                                                                              WilliamMab 2021-06-22 18:09:28 回复
                                                                                              • Tremendous issues here. I'm very satisfied to peer your post. Thank you a lot and I'm looking forward to contact you. Will you please drop me a e-mail?
                                                                                                우리카지노 2021-06-22 18:23:55 回复
                                                                                                • levitra 100mg pills levitra prices usa levitra discounts coupons for levitra levitra 100mg pills vardenafil buy
                                                                                                  GeorgeInsug 2021-06-22 22:39:11 回复
                                                                                                  • Thanks for sharing your thoughts on django. Regards
                                                                                                    SM 카지노 2021-06-22 23:21:04 回复
                                                                                                    • Hello! I know this is somewhat off topic but I was wondering which blog platform are you using for this website? I'm getting fed up of Wordpress because I've had issues with hackers and I'm looking at options for another platform. I would be great if you could point me in the direction of a good platform.
                                                                                                      카지노사이트 2021-06-23 02:36:33 回复
                                                                                                      • Remarkable things here. I am very happy to look your article. Thank you so much and I'm taking a look forward to touch you. Will you please drop me a mail?
                                                                                                        우리카지노 2021-06-23 02:38:48 回复
                                                                                                        • amitriptyline amitriptyline overdose amitriptyline for sleep amitriptyline uses what is amitriptyline amitriptyline for migraines
                                                                                                          DylanChoit 2021-06-23 03:57:14 回复
                                                                                                          • Attractive part of content. I just stumbled upon your weblog and in accession capital to say that I get in fact loved account your blog posts. Anyway I'll be subscribing on your feeds and even I fulfillment you get entry to persistently fast.
                                                                                                            원엑스벳 2021-06-23 07:27:50 回复
                                                                                                            • Pretty element of content. I just stumbled upon your website and in accession capital to claim that I get in fact loved account your weblog posts. Anyway I'll be subscribing for your feeds or even I success you get right of entry to persistently quickly.
                                                                                                              우리카지노 2021-06-23 09:04:01 回复
                                                                                                              • cymbalta 60 mg cymbalta what is cymbalta duloxetine dr cymbalta 30 mg duloxetine
                                                                                                                MartinOrarm 2021-06-23 09:04:54 回复
                                                                                                                • It's not my first time to visit this website, i am browsing this site dailly and take nice information from here daily.
                                                                                                                  메리트카지노쿠폰 2021-06-23 10:18:37 回复
                                                                                                                  • If you wish for to grow your know-how just keep visiting this web page and be updated with the newest information posted here.
                                                                                                                    온라인카지노 2021-06-23 10:54:39 回复
                                                                                                                    • Great blog! Do you have any tips and hints for aspiring writers? I'm hoping to start my own site soon but I'm a little lost on everything. Would you propose starting with a free platform like Wordpress or go for a paid option? There are so many choices out there that I'm totally confused .. Any tips? Thanks a lot!
                                                                                                                      더킹카지노 2021-06-23 11:11:45 回复
                                                                                                                      • Hi everyone, it's my first pay a visit at this website, and piece of writing is genuinely fruitful in favor of me, keep up posting these articles.
                                                                                                                        카지노 추천 2021-06-23 12:26:42 回复
                                                                                                                        • hydrochlorothiazide lisinopril hydrochlorothiazide dosage hydrochlorothiazide dosage triamterene hydrochlorothiazide hydrochlorothiazide 50 interactions for hydrochlorothiazide
                                                                                                                          Scottelise 2021-06-23 13:07:25 回复
                                                                                                                          • I enjoy looking through an article that will make people think. Also, thank you for allowing for me to comment!
                                                                                                                            우리 카지노 2021-06-23 13:50:15 回复
                                                                                                                            • I was pretty pleased to find this great site. I want to to thank you for your time for this particularly wonderful read!! I definitely liked every bit of it and I have you saved to fav to check out new information on your blog.
                                                                                                                              더킹카지노 2021-06-23 15:00:33 回复
                                                                                                                              • When I originally commented I clicked the "Notify me when new comments are added" checkbox and now each time a comment is added I get three emails with the same comment. Is there any way you can remove me from that service? Bless you!
                                                                                                                                Smok Novo 2021-06-23 15:28:15 回复
                                                                                                                                • If some one wants expert view concerning blogging after that i recommend him/her to pay a quick visit this webpage, Keep up the good work.
                                                                                                                                  메리트카지노 2021-06-23 16:16:43 回复
                                                                                                                                  • metformin recall 2020 does metformin cause diarrhea metformin cancer metformin er 500mg dangers of taking metformin metformin 1000 mg pill
                                                                                                                                    AnthonyBup 2021-06-23 17:07:16 回复
                                                                                                                                    • Thankfulness to my father who stated to me regarding this weblog, this weblog is genuinely remarkable.
                                                                                                                                      우리카지노계열 2021-06-23 18:09:55 回复
                                                                                                                                      • It's an awesome piece of writing in favor of all the internet viewers
                                                                                                                                        bắn cá ăn xu 2021-06-23 19:50:58 回复
                                                                                                                                        • mirtazapine for cats mirtazapine medication mirtazapine for cats mirtazapine 15 mg at bedtime mirtazapine side effects mirtazapine 15 mg at bedtime
                                                                                                                                          DeweyPor 2021-06-23 20:59:27 回复
                                                                                                                                          • ivermectin 6 tablet
                                                                                                                                            LisaBelty 2021-06-23 21:26:36 回复
                                                                                                                                            • Thank you for any other wonderful post. Where else could anybody get that type of information in such a perfect method of writing? I've a presentation next week, and I'm on the look for such information.
                                                                                                                                              카지노사이트 2021-06-23 21:31:25 回复
                                                                                                                                              • super kamagra
                                                                                                                                                zongoxy 2021-06-23 22:56:43 回复
                                                                                                                                                • It's an amazing piece of writing for all the internet people
                                                                                                                                                  카지노사이트 2021-06-23 23:14:20 回复
                                                                                                                                                  • Wow, this post is pleasant, my younger sister is analyzing these things, therefore I am going to inform her.
                                                                                                                                                    카지노 사이트 2021-06-23 23:29:11 回复
                                                                                                                                                    • direct lending
                                                                                                                                                      Loans 2021-06-24 00:47:01 回复
                                                                                                                                                      • This piece of writing is genuinely a good one it helps new web visitors, who are wishing for blogging.
                                                                                                                                                        카지노 사이트 2021-06-24 06:14:04 回复
                                                                                                                                                        • Hi! This is my first comment here so I just wanted to give a quick shout out and tell you I really enjoy reading through your blog posts. Can you suggest any other blogs/websites/forums that deal with the same topics? Thanks a ton!
                                                                                                                                                          더킹카지노 2021-06-24 08:37:33 回复
                                                                                                                                                          • Hi there! This post could not be written any better! Reading this post reminds me of my good old room mate! He always kept talking about this. I will forward this write-up to him. Fairly certain he will have a good read. Thank you for sharing!
                                                                                                                                                            xổ số cần thơ 2021-06-24 08:43:25 回复
                                                                                                                                                            • bad credit cash advance
                                                                                                                                                              Loan 2021-06-24 09:44:39 回复
                                                                                                                                                              • You ought to be a part of a contest for one of the best blogs online. I most certainly will highly recommend this site!
                                                                                                                                                                007 카지노 2021-06-24 10:12:25 回复
                                                                                                                                                                • bupropion xl wellbutrin pregnancy category wellbutrin dosage bupropion hcl 150mg bupropion brand name wellbutrin smoking cessation
                                                                                                                                                                  WilliamTic 2021-06-24 11:02:23 回复
                                                                                                                                                                  • cialis australia cost
                                                                                                                                                                    AmyBelty 2021-06-24 11:38:20 回复