我正在使用NSQ http://nsq.io/评估特定项目。我们的想法是设置一个数据管道,其中每个步骤都是一个作业,理想情况下状态将位于消息体中。
让我想到了潜在的最大邮件大小。我无法找到有关此主题的任何文档。可以是任何尺寸吗?我想如果消息大到不适合内存,它会影响性能。
答案 0 :(得分:4)
正如Aldo所提到的,默认的最大邮件大小约为1兆字节。
使用NSQ守护程序的max-msg-size
开关很容易改变。以下是如何使用它的示例:
private void Populate_DataGrin(int intMonth, string strLocation)
{
dtSomeDataTable = OracleDBHelper.ExecuteDataSet2(UserConnName, CommandType.StoredProcedure
, new OracleParameter("var_IntMonth", intMonth)
, new OracleParameter("var_StrLocation", strLocation)
, new OracleParameter
{
ParameterName = "p_cursor"
,
OracleDbType = OracleDbType.RefCursor
,
Direction = ParameterDirection.Output
}
).Tables[0];
YourDataGrid.DataSource = null;
YourDataGrid.DataSource = dtSomeDataTable;
YourDataGrid.DataBind();
}
这告诉NSQ守护程序(nsqd --lookupd-tcp-address=127.0.0.1:4160 -max-msg-size=2097152
)最大邮件大小应该是2兆字节而不是默认值。
正如您在评论中提到的那样,使用此设置,您确实会收到一条可以填满内存的消息。
答案 1 :(得分:1)
据我在文档中可以看出,它看起来像it's 1MB by default。
我知道这听起来很多,但我设法达到了这个极限。
我现在正在做的是发送一条NSQ消息,其中包含有关事件的最少数据,并在处理时获取另一端的完整数据。