span8
span4
你好,
我在FME服务器上遇到了一个topic的问题:
我有一个工作空间(控制器),它通过jobsubmitter触发另一个工作空间(工作者)。
如果成功,工作人员会在主题“reporter_database”上发帖。它发送一些json代码。
案例1:当我通过控制器运行worker时,主题不是“激活的”。
案例2:如果我直接通过web浏览器界面启动worker,它将正确运行并激活主题。
我注意到这两种方法有区别(见图)。在rigth (case2)上,有一些FME指令和Notification Manager指令,而在case1上什么都没有…
有人知道我怎么解这个案子吗?
谢谢你!
劳伦特
如果我没有理解错的话,几天前我不得不处理一个类似的问题。
我的问题是,我的工作区发布到jobsubmitter服务,并设置为在成功或失败时触发两个主题。
如果我使用FME服务器web接口运行工作区,就会使用jobsubmitter服务并正确触发主题。
但是,如果工作区通过FMEServerJobSubmitter转换器运行,则使用REST服务,并且不会触发主题,因为它们与jobsubmitter服务绑定。
我没有使用FMEServerJobSubmitter,而是使用了HTTPCaller:
完整的请求URL:
$ (CCD_FME_SERVER_URL) / fmejobsubmitter / (CCD_FME_REPOSITORY) / (CCD_FME_WS_CONVERSION) ?美元opt_servicemode = async&opt_responseformat = json&tm_priority = $ (CCD_FME_JOB_PRIORITY)
希望这能有所帮助。
问候,
拉里
这是有意义的。我想你说的很对作业提交者和转换/命令/提交服务。
我认为问题是REST API假设您将自己在JSON的fme部分中明确指定任何主题,您将提交带有已发布参数的主题,等等。
从API帮助,这里是一个例子:
{" FMEDirectives ": {},“NMDirectives”: {“failureTopics”: [],“successTopics”: []},“TMDirectives”: {“rtc”:假的,“描述”:“这是我的描述”,“优先”:5“标签”:“linux”},“publishedParameters”:[{“名称”:“MAXY”,“价值”:“42”},{“名称”:“主题”,“价值”:[“机场”、“cenart”]}],“小节”:“REST_SERVICE”}
正如您所看到的,在以这种方式执行工作区时,必须明确地设置“failureTopics”和“successTopics”。
嗨Laurant@lau
你说……
案例1:当我通过控制器运行worker时,主题不是“激活的”。
我的问题是,你如何运行控制器?您是在FME桌面(即工作台)上运行它,还是在FME服务器web界面上运行它?
不同之处在于,如果您在FME Workbench中运行控制器,那么它将立即运行,但是工作人员将被放入队列。如果在FME服务器中运行控制器,则控制器将被放入队列中,但工作人员将立即运行。
这种差异影响了指令的应用。我不知道,但它可能也会影响通知。所以我很想看看你(和@jpvo)是运行控制器,如果有不同,如果你运行它的方式不同。
问候
马克
嗨,马克,
谢谢你的回答。
我尝试在服务器和桌面运行控制器。结果是一样的。
我也试着在失败的主题上发表文章。我得到了相同的观察结果。当我运行控制器时,主题没有被激活。当我直接运行跑步者,主题被激活,并发送电子邮件。
这真的很烦人,因为如果我的工作空间崩溃了,我就收不到邮件了……你能给我点建议吗?
提前谢谢。
劳伦特
恐怕我没有,我在数据库里找不到任何东西可以解释发生了什么。所以我让我们的服务器支持团队来看看这个问题,看看他们能不能帮上忙。对给您带来的不便深表歉意。我希望他们能尽快联系。
嗨,刘,
我可以重现这个问题。这听起来很奇怪:
在第一个图像中,我通过UI启动了一个worker,作业启动并在主题上发布正确的JSON信息。如果我触发相同的JSONPOST。fmw via a transformer fmeserverJobSubmitter the topic never gets activated.
为什么?
FME服务器2015.1.3.1 - Build 15573 - win64
版权所有(c) 1994 - 2015,安全软件公司。亚搏在线
谢谢你的帮助。
我找到了另一个办法。使用我的worker,我可以在一个单独的文件夹中创建json文件。我可以在这个文件夹中添加一个目录监视,当在该文件夹中进行修改时,它会发布到主题…不是很好,但应该可以……
如果有人有最好的主意,不要犹豫与人分享。谢谢!
我真的很鼓励您考虑设置fmeserverjobsubmitter transformer来等待或与我们讨论它,但是这里有一个替代方案……
您可以使用httpcaller转换器使用作业提交者web服务运行工作区。可以从工作区的web ui>run页面找到web服务的url。这是一种不太标准的方法,但它将导致向主题传递完全相同格式的json。
我希望这能有帮助。感谢您对FME社区的贡献。亚搏国际在线官网
你好大卫,
谢谢你的回答。不幸的是,我的jobsubmitters被设置为“wait for the job”= No。所以我认为你的方法行不通……
你知道还有其他的可能性吗?也许我可以使用Shutdown Python脚本?有没有一种方法可以知道在python代码中转换是否成功?
是的,您是对的,您必须将wait for job设置为yes才能使其生效。有什么特别的原因不能?
使用python脚本任何事情都是可能的,但是除非您已经习惯于编写python代码,否则它会变得不稳定。
有两种技术可以将工作区变量传递给关闭脚本,最简单的是使用python全局变量。
我认为将fmeserverjobsubmitter转换程序设置为等待作业完成应该可以正常工作。它不会使用额外的fme引擎。就像@大卫,我想知道是什么阻止了这一切?
©2019安全亚搏在线软件公司法律