关于AKKA Remoting方式发送message大小限制

  如题,打算测试一下AKKA的actor模型远程传输的限制,结果还真发现了点问题。

  设计测试用例如下:

    Client端:

 1 package cn.wanda.local
 2
 3 import akka.actor.Actor
 4 import module.{ListType, JsonType, SeqType}
 5
 6 import java.util.ArrayList
 7 /**
 8  * Created by Administrator on 2014/11/17.
 9  */
10 class LocalActor extends Actor {
11
12   val remote = context.actorSelection("akka.tcp://[email protected]:8000/user/RemoteActor")// create the remote actor
13   var counter = 0
14   //val seq:IndexedSeq[Int] = for(i <- 0 to 12335) yield i
15   val list = List(1 to 100000:_*)
16
17   def receive = {
18     case "START" => {
22       remote ! new ListType(list)
23     }
24     case msg: String =>{
25       println(s"LocalActor received message: ‘$msg‘")
26     }27   }
28 }

    Server端:

 1 package cn.wanda.remote
 2
 3 import akka.actor.Actor
 4 import module.{ListType, SeqType}
 5 /**
 6  * Created by Administrator on 2014/11/17.
 7  */
 8 class RemoteActor extends Actor {
 9   def receive = {
10     case msg: String => {
11       println(s"RemoteActor received message ‘$msg‘")
12       println(sender().toString())
13       //sender ! Future.successful("Hello from the RemoteActor")
14     }
15     case seq: SeqType => {
16       print(seq)
17     }
18     case list: ListType => {
19       //println("hello")
20       println(list)
21     }
22   }
23 }

    将这个100000长度的数组发送到远程的Actor

  Client端的输出如下:

[DEBUG] [12/03/2014 16:45:32.173] [main] [EventStream(akka://LocalSystem)] logger log1-Logging$DefaultLogger started
[DEBUG] [12/03/2014 16:45:32.176] [main] [EventStream(akka://LocalSystem)] Default Loggers started
[INFO] [12/03/2014 16:45:32.260] [main] [Remoting] Starting remoting
[INFO] [12/03/2014 16:45:32.821] [main] [Remoting] Remoting started; listening on addresses :[akka.tcp://[email protected]:53304]
[INFO] [12/03/2014 16:45:32.825] [main] [Remoting] Remoting now listens on addresses: [akka.tcp://[email protected]:53304]
----ActorSelection[Anchor(akka.tcp://[email protected]:8000/), Path(/user/RemoteActor)]
[DEBUG] [12/03/2014 16:45:33.204] [LocalSystem-akka.remote.default-remote-dispatcher-6] [akka.tcp://[email protected]:53304/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2FHelloRemoteSystem%40localhost%3A8000-0/endpointWriter] Associated [akka.tcp://[email protected]:53304] -> [akka.tcp://[email protected]:8000]
[DEBUG] [12/03/2014 16:45:33.211] [LocalSystem-akka.remote.default-remote-dispatcher-6] [akka.serialization.Serialization(akka://LocalSystem)] Using serializer[akka.serialization.JavaSerializer] for message [module.ListType]
[ERROR] [12/03/2014 16:45:33.340] [LocalSystem-akka.remote.default-remote-dispatcher-6] [akka.tcp://[email protected]:53304/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2FHelloRemoteSystem%40localhost%3A8000-0/endpointWriter] Transient association error (association remains live)
akka.remote.OversizedPayloadException: Discarding oversized payload sent to Actor[akka.tcp://[email protected]:8000/]: max allowed size 128000 bytes, actual size of encoded class akka.actor.ActorSelectionMessage was 1000508 bytes.

[DEBUG] [12/03/2014 16:45:33.341] [LocalSystem-akka.remote.default-remote-dispatcher-6] [akka.tcp://[email protected]:53304/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2FHelloRemoteSystem%40localhost%3A8000-0/endpointWriter] Drained buffer with maxWriteCount: 50, fullBackoffCount: 1, smallBackoffCount: 0, noBackoffCount: 0 , adaptiveBackoff: 1000

  Server端输出如下:

[DEBUG] [12/03/2014 16:45:33.191] [HelloRemoteSystem-akka.remote.default-remote-dispatcher-5] [Remoting] Associated [akka.tcp://[email protected]:8000] <- [akka.tcp://[email protected]:53304]

在Client端的输出信息里有这样一句:

[ERROR] [12/03/2014 16:45:33.340] [LocalSystem-akka.remote.default-remote-dispatcher-6] [akka.tcp://[email protected]:53304/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2FHelloRemoteSystem%40localhost%3A8000-0/endpointWriter] Transient association error (association remains live)
akka.remote.OversizedPayloadException: Discarding oversized payload sent to Actor[akka.tcp://[email protected]:8000/]: max allowed size 128000 bytes, actual size of encoded class akka.actor.ActorSelectionMessage was 1000508 bytes.

最大允许发送128000bytes大小的消息,也就是125kb,但输出端似乎也接收到了什么,消息到底发送到哪里了,后续再细说.....未完,待续

时间: 2024-10-27 17:14:45

关于AKKA Remoting方式发送message大小限制的相关文章

python3 邮件方式发送测试报告

以邮件方式发送测试报告 import smtplib from email.mime.text import MIMEText class SendEmail: """邮件方式发送报告""" global send_user global email_host global password send_user = "[email protected]" email_host = "smtp.163.com"

C#带cookie Post和Get方式发送数据,保持cookie

在实际编程中,可能需要读取特定网页的信息,但很多网站需要用户登录后,才能够获取相关的页面内容,这就需要编程者先临时存储当前的cookie,在C#中可以使用CookieContainer 对象来保存登录后的Cookie信息,这样,在每次发送数据的时候,附加上Cookie信息,就可以了. #region 同步通过POST方式发送数据 /// <summary> /// 通过POST方式发送数据 /// </summary> /// <param name="Url&qu

通过PHP将文件以流的方式发送客户端

以前在ASP下,通过BASP21实现类似功能.现在将PHP版本整理在这里. 通过以下代码中所使用的技术可以实现如下几个可能的需求 1.在有模板的基础上,针对客户的定制下载. 2.一些浏览器本身能够表示的文件类型(如txt文件),可以通过将头信息Content-Type改为 header("Content-Type: application/force-download");进行强制下载. 3.对于一些动态生成文件,比如TXT/CSV等文件,将临时文件及时删除 <?php /**

Handler发送Message

用Handler更新UI 1 package activity.cyq.handlermessage; 2 3 import android.content.res.Resources; 4 import android.graphics.Bitmap; 5 import android.graphics.BitmapFactory; 6 import android.os.Handler; 7 import android.os.Message; 8 import android.suppor

C# Post Get 方式发送请求

httpPost 方式发送请求 不带参数 1 /// <summary> 2 /// 没有参数的post请求 3 /// </summary> 4 public void HttpPostNoParam() 5 { 6 string Url = "请求地址"; 7 HttpWebRequest request = WebRequest.CreateHttp(Url); 8 request.Method = "POST"; 9 request.

hMailServer之发送附件大小限制

hMailServer发送附件大小限制有以下几个地方: 1.php配置 参考 1.post_max_size = 10M 表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的. 2.file_uploads = On 是否允许上传文件,如果为OFF您将不能上传文件. 3.upload_tmp_dir = "D:/PHP/uploadtemp/" 上传文件时系统使用的缓存目录.如果此目录所在磁盘空间不足的话您将不能上传文件. 4.upload_m

Android Handler机制 (一个Thead中可以建立多个Hander,通过msg.target保证MessageQueue中的每个msg交由发送message的handler进行处理 ,但是 每个线程中最多只有一个Looper,肯定也就一个MessageQuque)

转载自http://blog.csdn.net/stonecao/article/details/6417364 在android中提供了一种异步回调机制Handler,使用它,我们可以在完成一个很长时间的任务后做出相应的通知 handler基本使用: 在主线程中,使用handler很简单,new一个Handler对象实现其handleMessage方法,在handleMessage中 提供收到消息后相应的处理方法即可,这里不对handler使用进行详细说明,在看本博文前,读者应该先掌握hand

用 AFNetworking 通过 POST 方式发送数据

用 AFNetworking 通过 POST 方式发送数据BY 子非鱼 · 2014 年 5 月 26 日 AFNetworking进行POST请求中 发送json数据有些特别 .AFNetworking 版本为 2.0.2POST 发送数据有两种形式:1.发送纯文本的内容2.发送的 body 部分带有文件(图片,音频或者其他二进制数据)对应的 Content-Type 有两种:1.application/x-www-form-urlencoded2.multipart/form-data传统的

python通过get方式,post方式发送http请求和接收http响应-urllib urllib2

python通过get方式,post方式发送http请求和接收http响应-- import urllib模块,urllib2模块, httplib模块 http://blog.163.com/[email protected]/blog/static/132229655201231085444250/ 测试用CGI,名字为test.py,放在apache的cgi-bin目录下:#!/usr/bin/pythonimport cgidef main():     print "Content-t