2

我有一个应用程序(用 CSharp 编写),它当前只连接到一个相干集群。这个集群被输入数据,当应用程序在集群的缓存中看到这个时,它使用它来获取更多关于它被传递的信息,然后将它传递回集群,然后将这些数据存储在它的第二个缓存中。

我现在想要做的是让应用程序连接到第二个一致性集群,当它在该集群的缓存中看到某些数据时,它应该再次获取该数据并找到更多信息,然后将其传递回该集群,该集群再次存储此数据在其二级缓存中。

我遇到的问题是如何配置我的应用程序以连接到两个缓存?

我已经围绕这个问题做了一些阅读,但答案相互矛盾。一个建议是更改在运行时使用的类加载器,但我不确定该怎么做,或者这是否是正确/最好的事情?

对此问题的任何帮助或指导将不胜感激。

编辑:经过更多挖掘,我找到了这个解释,有没有人知道这是否是正确的做法?

http://forums.oracle.com/forums/thread.jspa?threadID=1518273

4

1 回答 1

1

在更详细地研究了这一点之后,似乎需要上面链接中建议的解决方案。您需要作为扩展客户端连接到每个集群(因为您只能成为一个集群的成员,而不必做一些聪明/混乱的事情来更改类加载器),然后添加一些额外的配置来指定另一个集群和缓存配置。一个例子如下:

<?xml version='1.0'?>
<cache-config>
  <caching-scheme-mapping>
    <cache-mapping>
      <cache-name>Cache_for_C1</cache-name>
      <scheme-name>extend-cache-C1</scheme-name>
    </cache-mapping>
    <cache-mapping>
      <cache-name>Cache_for_C2</cache-name>
      <scheme-name>extend-cache-C2</scheme-name>
    </cache-mapping>
  </caching-scheme-mapping>
  <caching-schemes>
    <remote-cache-scheme>
      <scheme-name>extend-cache-C1</scheme-name>
      <initiator-config>
        <tcp-initiator>
          <remote-addresses>
            <socket-address>
              <address>C1host</address>
              <port>30200</port>
            </socket-address>
          </remote-addresses>
        </tcp-initiator>
      </initiator-config>
    </remote-cache-scheme>
    <remote-cache-scheme>
      <scheme-name>extend-cache-C2</scheme-name>
      <initiator-config>
        <tcp-initiator>
          <remote-addresses>
            <socket-address>
              <address>C2host</address>
              <port>30200</port>
            </socket-address>
          </remote-addresses>
        </tcp-initiator>
      </initiator-config>
    </remote-cache-scheme>
  </caching-schemes>
</cache-config>

希望这会帮助像它帮助我的其他人:)

于 2010-12-15T10:36:18.623 回答