假设我有一个应用程序负责获取供应商消息并将其转换为规范消息。例如:
public class MessageA extends VendorMessage { ... }
public class MessageB extends VendorMessage { ... }
public class MessageX extends CanonicalMessage { ... }
public class MessageY extends CanonicalMessage { ... }
Run Code Online (Sandbox Code Playgroud)
其中 MessageA 映射到 MessageX,MessageB 映射到 MessageY。
我的方法是,每种消息类型都有一个转换器类来处理此转换。在这个例子中,我将有以下变压器:
public class MessageXTransfomer()
{
public MessageX transform(MessageA message) {...}
}
public class MessageYTransfomer()
{
public MessageY transform(MessageB message) {...}
}
Run Code Online (Sandbox Code Playgroud)
我的问题实际上是我最终调用变压器的方式。
由于我的流程需要一些 VendorMessage 作为输入,因此我需要询问类型,以便知道将其定向到哪个特定的转换器。例如,一种方法可能如下所示:
public class TransfomerService
{
MessageXTransformer messageXTransformer = new MessageXTransformer();
MessageYTransformer messageYTransformer = new MessageYTransformer();
public CanonicalMessage …
Run Code Online (Sandbox Code Playgroud) 我有一个函数来检查对象列表,看看它们是否被点击并相应地触发OnClick事件.我相信功能正常,但是我遇到了问题:
当我挂钩其中一个OnClick事件并删除并将该元素插入列表中的不同位置(此程序的典型功能)时,我收到"Collection was modified ..."错误.
我相信我明白发生了什么:
我的问题是,如何让我允许函数遍历所有对象,在适当的时间触发必要的事件,并仍然让用户可以选择操作对象在列表中的位置?
我有一个迭代事件列表并将它们保存到表中的进程.如果某个特定事件抛出异常,我需要能够使用数据库回滚该事件的事务,而不会影响其他事件的流程.
为此,我有以下设置:
public class EventService
{
public void processEvents()
{
List<Event> events = getEvents();
foreach(Event event : events)
{
try
{
processEvent(event);
}
catch(Exception e)
{
// log the exception and continue processing additional events
}
}
}
@Transactional
public void processEvent(Event event)
{
// Process event and insert rows into database
// Some event will throw a runtime exception
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果抛出异常,则不会回滚事件.
有没有办法实现我在这里要做的事情?
为了简化本地开发/测试,我有一个部署所有子图表的伞图。这些应用程序使用资源(例如 MongoDB、Kafka 等),我想确保如果您将伞图安装到集群,它也会安装这些资源。
为此,我有以下几点:
apiVersion: v2
name: my-cool-project
type: application
version: 0.1.0
appVersion: 0.1.0
dependencies:
- name: my-cool-app-1
repository: "file://my-cool-app-1"
- name: my-cool-app-2
repository: "file://my-cool-app-2"
- name: bitnami/kafka
version: 2.5.0
repository: "https://charts.bitnami.com/bitnami"
Run Code Online (Sandbox Code Playgroud)
不幸的是,安装此图表会引发以下错误:
Error: found in Chart.yaml, but missing in charts/ directory: bitnami/kafka
Run Code Online (Sandbox Code Playgroud)
这对于 Helm 的概念来说似乎非常重要,以至于它不起作用的事实意味着我显然错过了一些基本的东西。即使官方文档也很清楚这是正确的方法。
大多数文档/指南都会指导您直接helm install
连接到集群。虽然这可能会解决我在集群上需要 Kafka 或 MongoDB 的直接问题,但我的愿望是对该资源的需求进行代码化,以便我可以实现“单个图表将所有内容安装到空集群中并且它可以正常工作”状态。
我缺少什么?
这似乎是一个相当简单的问题,但解决方案是让我不知所措:
如果我有以下两个字符串:
string str1 = "Ping";
string str2 = "Pong";
Run Code Online (Sandbox Code Playgroud)
我需要一个算法来为两个字符串创建一个唯一值,无论它们处于什么顺序.例如:
UniqueValue(str1,str2)和UniqueValue(str2,str1)应返回完全相同的值.
编辑:UniqueValue返回一个字符串.我知道它不会"真正"独特,但类似哈希的值将起作用.
谢谢,泰勒